tcl 接受名称/变量引用的过程

示例

proc myproc {varName alpha beta} {
    upvar 1 $varName var
    set var [expr {$var * $alpha + $beta}]
}
set foo 1
myproc foo 10 5
puts $foo
# => 15

在这种特殊情况下,将为过程指定当前作用域中的变量名称。在Tcl过程中,此类变量不是自动可见的,但是upvar命令可以为另一个堆栈级别的变量创建别名:1表示调用者的堆栈级别,#0表示全局级别,等等。在这种情况下,堆栈级别1和名称foo(来自参数变量varName)让我们upvar找到该变量并创建名为的别名var。上的每个读或写操作var也都发生foo在调用者的堆栈级别。