我想创建几个处理字典的过程,例如:
->推送
->弹出
->打印
etc
我创建了一个程序;创建/设置字典的值";。
从用户的角度来看,他们会做:
push myDict1 key value
push myDict2 key value
这将创建两个具有给定键和值的不同字典。
现在,我希望该过程返回字典的变量,这样用户就可以执行以下操作:
CCD_ 3和内容将被显示。
如果我做了这样的事情:
proc push {dictName key value } {
return [dict set $dictName $key $value]
}
它将返回表达式的值,但我希望它写入某种全局变量,其名称为myDict1或myDict2,这是用户在调用过程时指定的。
我已经尝试使用两种";变量";以及";upvar";没有成功。
如有任何帮助,我们将不胜感激。提前谢谢。
干杯,
Pedro
学习使用upvar
可能很棘手,您可能使用错误。
proc push {dictName key value} {
upvar $dictName local_dict
# Any change to 'local_dict' will affect the $dictName variable
# in the scope that called the proc.
dict set local_dict $key $value
return $local_dict
}
set myDict1 [dict create]
push myDict1 key1 value1
puts $myDict1 --> 'key1 value1'
(从我最初的回答中删除了一条错误的评论(