man*_*rma 0 dictionary procedure tcl
我正在尝试编写一个使用字典值来存储一些数据的脚本。然后,我将相同的字典值用于进一步处理的过程。它看起来像这样:
proc testProc {a} {
some statements ...
dict incr a key2 1
}
set dummy [dict create]
dict incr dummy key1 1
testProc $dummy
puts "[dict get $dummy]"
Run Code Online (Sandbox Code Playgroud)
我期望得到的输出为:
键1 1 键2 1
相反,我得到了:
键1 1
如果我想要第一个输出,那么我应该怎么做。
谢谢
testProc更新字典的副本。您可以返回修改后的并保存它:
proc testProc {a} {
# some statements ...
dict incr a key2 1
return $a
}
set dummy [dict create]
dict incr dummy key1 1
set dummy [testProc $dummy]
puts [dict get $dummy]
Run Code Online (Sandbox Code Playgroud)
或传递保存字典的变量的名称upvar并使用(类似于dict incr等的工作方式):
proc testProc {aDict} {
upvar $aDict a
# some statements ...
dict incr a key2 1
}
set dummy [dict create]
dict incr dummy key1 1
testProc dummy
puts [dict get $dummy]
Run Code Online (Sandbox Code Playgroud)