我对TCL中的全局变量有疑问:
set gvar "abc"
proc justTest {} {
global gvar
puts $global
}
如果在全局空间中声明变量,我们应该使用global
关键字来访问proc中的全局变量,但是如果没有声明全局变量,那么我们在里面使用global
关键字一个功能,会发生什么?例如:
proc justTest {} {
global gvar
set here $gvar
puts $here
}
然后会发生什么?
答案 0 :(得分:2)
就像你试图访问一个从未声明的局部变量一样。
can't read "gvar": no such variable
在相关的说明中,如果你set
来自proc中的变量,你将能够从主范围访问它(当然在调用proc之后)。< / p>
答案 1 :(得分:2)
在这种情况下,您正在使用其值,但未设置它。您不必在定义之前设置全局变量gvar
。您只需在调用之前设置gvar
即可。未能事先设置gvar
将导致错误。
在这种情况下,您无需在调用proc之前创建全局变量。在调用proc之后,将创建全局变量并使其可用。