如何获取嵌套数组值?

时间:2017-08-25 03:36:04

标签: tcl

我有一个嵌套数组如下:

array set arrayA {0 {1 a 2 b 3 c 4 d}}

如果我想像这样更新arrayA:

set arrayA(0)(1) "update"

它无法获得{0 {1 update 2 b ...}},如何获得它?谢谢!

1 个答案:

答案 0 :(得分:1)

Tcl数组不能以这种方式嵌套,但您的代码仍然有效。在arrayA中,元素0的值为dict,因此您可以使用dict操作来获取和设置成员:

% dict get $arrayA(0) 1
a
% dict set arrayA(0) 1 update
1 update 2 b 3 c 4 d

另一种方法是使用数组成员的复合名称:

array set arrayA {0.1 a 0.2 b 0.3 c 0.4 d 1.1 aa 1.2 ab}

并使用arrayA(0.1)arrayA(0.$foo)等访问它们。使用哪个分隔符主要是首选项问题,唯一的规则是名称必须是正确的列表。您甚至不需要分隔符,只要始终将元素名称保留在变量中:

% array set arrayA {{0 1} a {0 2} b}
% set idx {0 1}
0 1
% set arrayA($idx)
a

文档:

arraydict