接受變數名稱引用的過程
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
中。