0
我有如下嵌套數組:如何獲取嵌套的數組值?
array set arrayA {0 {1 a 2 b 3 c 4 d}}
如果我想更新對ArrayA這樣的:
set arrayA(0)(1) "update"
它不能獲得{0 {1更新2 B ...} },如何得到它?謝謝!
我有如下嵌套數組:如何獲取嵌套的數組值?
array set arrayA {0 {1 a 2 b 3 c 4 d}}
如果我想更新對ArrayA這樣的:
set arrayA(0)(1) "update"
它不能獲得{0 {1更新2 B ...} },如何得到它?謝謝!
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
文檔:
明白了,非常感謝! – Jimmy
@Jimmy:np,當我找到一個鍵盤時詳細闡述了一下。 –
很久以前,它可能通過一個upvar的怪異嵌套數組,但是根本沒有方便的語法,它確實是一個bug。自至少8.4以來,你無法嵌套它們; upvar代碼現在只會使變量具有與鏈接到的變量相同的屬性。 –