Tcl 中的 source 和 stack frame

@ 2009-07-19 17:04:55
标签:

    # 2008-08-13 15:55:51 by Sean Zhang

    今日工作中遇到点问题,总结一下。

    proc load_cmd {file} {
        source -echo -verbose $file
    }
    
    # case 1
    load_cmd $file
    
    # case 2
    source $file
    

    分别运行 case 1 和 case 2 会得到不同的结果。很是有点意外的。

    经过debug和尝试,解决办法

    proc load_cmd {file} {
        uplevel source -echo -verbose $file
    }
    

    问题解决了。原因呢?

    简而言之,被source的文件中需要用到的一些全局变量,看不到了。因为stack frame变化了。
    
    知道了原因,解决办法也就显而易见了。
    
    标签:

      分享到:
      comments powered by Disqus

      26/28ms