0

我对 TCL 中的全局变量有疑问:

set gvar "abc"

proc justTest {} {
    global gvar
    puts $global
}

如果在全局空间中声明了一个变量,我们应该global在proc内部使用关键字来访问全局变量,但是如果在哪里没有声明全局变量,但是我们global在函数内部使用关键字,会发生什么?例如:

没有声明全局变量

proc justTest {} {
        global gvar
        set here $gvar
        puts $here
    }

那么会发生什么?

4

2 回答 2

2

就像您尝试访问从未声明过的局部变量一样。

can't read "gvar": no such variable

在相关说明中,如果您set是 proc 中的变量,您能够从主范围访问它(当然在调用 proc 之后)。

于 2012-09-21T13:55:16.957 回答
2

案例 1:您正在引用全局变量

在这种情况下,您正在使用它的值,但没有设置它。在定义procgvar之前,您不必设置全局变量。您只需要在调用您的 proc之前进行设置。未事先设置将导致错误。gvargvar

案例2:你设置了全局变量的值

在这种情况下,您无需在调用 proc 之前创建全局变量。调用您的 proc 后,全局变量将被创建并可用。

于 2012-09-21T15:58:55.397 回答