我需要访问以动态方式创建的数组中的值 - 这意味着数组的名称存储在变量中。 为此,我尝试使用
eval
命令,但随后迷失了 $
的使用。
我确实成功检索了键值对,因为像 $
这样的命令不需要 array get
,但我需要使用的是 array(key)
模式。
预期的简化代码如下所示:
set arr foo;
set val1 v1;
set val2 v2;
eval "array set $arr \{
key1 $val1
key2 $val2
\}";
eval "set x \${$arr(key1)}";
至于最后一行实际上是失败的,我尝试了以下选项:
eval "set x \${$arr}(key1)";
或
eval "set x \$$arr(key1)"
更奇怪但没有成功。
请记住,
$var
是[set var]
的简写。所以你可以将命令写为:
set x [set ${arr}(key1)]
upvar
:
upvar 0 $arr arrvar
set x $arrvar(key1)