关于tcl中的全局变量

时间:2012-09-21 13:46:44

标签: tcl global

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

set gvar "abc"

proc justTest {} {
    global gvar
    puts $global
}

如果在全局空间中声明变量,我们应该使用global关键字来访问proc中的全局变量,但是如果没有声明全局变量,那么我们在里面使用global关键字一个功能,会发生什么?例如:

未声明全局变量

proc justTest {} {
        global gvar
        set here $gvar
        puts $here
    }
然后会发生什么?

2 个答案:

答案 0 :(得分:2)

就像你试图访问一个从未声明的局部变量一样。

can't read "gvar": no such variable

在相关的说明中,如果你set来自proc中的变量,你能够从主范围访问它(当然在调用proc之后)。< / p>

答案 1 :(得分:2)

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

在这种情况下,您正在使用其值,但未设置它。您不必在定义之前设置全局变量gvar。您只需在调用之前设置gvar即可。未能事先设置gvar将导致错误。

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

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