全局变量修改tcl

时间:2015-06-08 12:52:58

标签: tcl global

我有一个基本上看起来像这样的程序:

set var1 x

set var2 y

set var3 z

proc one {} {

     global var1
     set var1 "hello"
}

proc two {} {

     puts $var1
}

但是,当我调用proc然后调用两个时,输出似乎总是x,而不是“hello”。我在语法错误吗?或者这在tcl中是不可能的?

1 个答案:

答案 0 :(得分:0)

您没有像语义错误那样发生语法错误。过程中的变量始终本地(除非使用限定名称指定它们)。这意味着two正在谈论自己的var1,而不是全球的proc two {} { global var1 puts $var1 } 。要使用全局的,您需要明确要求它:

proc two {} {
    puts $::var1
}

或者,使用全局变量的完全限定名称:

global

我建议正常使用add_attachment;它更清晰,更快(假设您使用变量几次,实际代码通常就是这种情况)。