我对TCL相当陌生,并且正在为其他人开发的某些代码提供QA(没有真正的!)。在这个特定的程序中有很多很多全局变量,有时我会看到upvar被使用,通常与全局一起使用。我明白upvar会模仿通过引用,但下面两个procs之间的实际区别是什么?upvar和全局命令在tcl中的实际区别是什么
set myBigFatGloblVariable "hello"
proc myFirstProc { var1 var2 } {
upvar 1 $var1 local
set local [expr $var2 * 3]
}
proc mySecondProc { var2 } {
global myBigFatGlobalVariable
set $myBigFatGlobalVariable [expr $var2 * 3]
}
myFirstProc $myBigFatGlobalVariable 3
mySecondProc 3
在我看来,myFirstProc会更干净。我在这里错过了什么吗?
请注意,你并没有将变量'myBigFatGlobalVariable'设置为3,而是将'hello'设置为3.你还在第一行中拼写'myBigFatGlobalVariable' $ dereferences它的前缀变量 它有帮助如果你张贴代码吨工作。 – 2009-03-03 23:08:13