TCL - Return 过程中的字典

TCL - Return Dictionaries within procedures

我想创建几个处理字典的程序,例如:

->推送

->流行

-> 打印

我创建了一个“creates/sets 字典值”的过程。

从用户的角度来看,他们会这样做:

push myDict1 key value

push myDict2 key value

这将创建两个具有给定键和值的不同字典。

现在,我希望程序 return 字典的变量,这样用户可以这样做:

puts $myDict1 or puts $myDict2 会显示内容。

如果我这样做:

proc push {dictName key value } {
    return [dict set $dictName $key $value]
}

它将 return 表达式的值,但我希望它写入某种全局变量,其名称为 myDict1 或 myDict2,由用户在调用过程时指定。

我试过同时使用“变量”和“upvar”但没有成功。

如有任何帮助,我们将不胜感激。提前致谢。

干杯,

佩德罗

学习使用 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'

(从我原来的回答中删除了一个不正确的评论)