在 TCL 中来回传递字典值
Passing a dictionary value to and fro in TCL
我正在尝试编写一个脚本,它使用 dictionary 值来存储一些数据。然后我将相同的字典值用于 procedure 以进行进一步处理。它看起来像这样:
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]"
我希望得到如下输出:
key1 1 key2 1
相反,我得到了:
key1 1
如果我想要第一个输出,那么我应该怎么做。
谢谢
testProc
更新字典的 copy。您可以 return 修改后的并保存它:
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]
或传递保存字典的变量的 name 并使用 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]
我正在尝试编写一个脚本,它使用 dictionary 值来存储一些数据。然后我将相同的字典值用于 procedure 以进行进一步处理。它看起来像这样:
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]"
我希望得到如下输出:
key1 1 key2 1
相反,我得到了:
key1 1
如果我想要第一个输出,那么我应该怎么做。
谢谢
testProc
更新字典的 copy。您可以 return 修改后的并保存它:
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]
或传递保存字典的变量的 name 并使用 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]