我有一个嵌套数组如下:
array set arrayA {0 {1 a 2 b 3 c 4 d}}
如果我想像这样更新arrayA:
set arrayA(0)(1) "update"
它无法获得{0 {1 update 2 b ...}},如何获得它?谢谢!
答案 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
文档: