我对 TCL 相当陌生,并且正在为其他人开发的一些代码提供 QA(不是真的!)。在这个特定的程序中有很多很多全局变量,我有时会看到 upvar 被使用,通常与 global 结合使用。我知道 upvar 模拟传递引用,但是以下两个 procs 之间的实际区别是什么?
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 会更干净,而且 . 我在这里错过了什么吗?