从变量值构造的变量名中获取字典值

时间:2016-06-27 14:44:35

标签: dictionary tcl concat

让一些说法如下:

set d0 [dict create key1 value1]
set d1 [dict create key1 value1]

我现在需要为每个字典获取value1,比如说:

for {set i 0} {$i < 2} {incr i} {
    dict get $d$i
}

我的问题在于循环的第二行,其中我无法连接并正确获取字典值,此结构需要$来调用字典名称,而不是dict append命令,我已尝试使用{}[]concatjoin无效,当然我遗漏了某些内容或误解了Tcl应该写的方式

1 个答案:

答案 0 :(得分:3)

您的直接解决方案是:

dict get [set d$i] ...

由于$在很大程度上是单参数 set命令的限制性语法糖。

但请考虑将字典放在数组中。

set d(0) [dict create key1 value1]
set d(1) [dict create key1 value1]
for {set i 0} {$i < 2} {incr i} {
    dict get $d($i) ...
}

语法更好!