访问动态命名数组中的值

问题描述 投票:0回答:1

我需要访问以动态方式创建的数组中的值 - 这意味着数组的名称存储在变量中。 为此,我尝试使用

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)"

更奇怪但没有成功。

tcl eval
1个回答
0
投票

请记住,

$var
[set var]
的简写。所以你可以将命令写为:

set x [set ${arr}(key1)]

但是对于这些情况,使用可能是最简单的

upvar

upvar 0 $arr arrvar
set x $arrvar(key1)
© www.soinside.com 2019 - 2024. All rights reserved.