Upvar 函數類似於C中的傳參,形如
upvar level otherVar myVar 對於myVar的操作都相當於操作otherVar
作用1 調用someproc函數時,不能直接使用varname。
proc someproc varname { upvar 1 $varname var set var 5 }someproc a
作用2 聲明一個全局變量,全局變量命名空間的level是0
upvar #0 foo foo ;# equivalent to: global foo
關於level,就是函數調用的層次
proc test_2 {b} { puts [info level] } proc test_1 {a} { puts [info level] test_2 b } test_1 a
輸出1 和 2 , 分別對應test_1和test_2的層級
此時如果在test_2 中調用0級變量,應該使用upvar 2 $varname var? 關於level講解後續再做介紹。