接受變數名稱引用的過程

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 中。