TCL TK與列表和數組的區別在哪裏? 我創建了3個數組的列表。返回數組列表
像這樣的一個循環
set x($idx) 1
incr idx
,後來我要回了 「RET」 對象
list set ret { $x $x2 $x3 }
與
lassign $data x x2 x3
但這不會再次解析它們工作... :( 可能有人請再次幫助我..該死的tcl tk ...:D:D
糾正我,如果我不正確,它不可能建立一個2dim列表或數組?
TCL TK與列表和數組的區別在哪裏? 我創建了3個數組的列表。返回數組列表
像這樣的一個循環
set x($idx) 1
incr idx
,後來我要回了 「RET」 對象
list set ret { $x $x2 $x3 }
與
lassign $data x x2 x3
但這不會再次解析它們工作... :( 可能有人請再次幫助我..該死的tcl tk ...:D:D
糾正我,如果我不正確,它不可能建立一個2dim列表或數組?
您的陣列被稱爲x - 您可以參考它的元素set x(1)
,set x(2)
等$ x2和$ x3在這種情況下沒有意義。
如果你想有一個2維數組,你可以在TCL如下模擬它:
set a(1,1) 0 ;# set element 1,1 to 0
set a(1,2) 5 ;# set element 1,2 to 5
如果你只是使用列表
set l1 [list a b c]
set l2 [list d e f]
set lol [list $l1 $l2]
您可以使用清單可能更容易array get/set
將數組作爲過程參數/返回值傳遞。例如:
proc someProc {arr} {
array set x $arr
set x(5) 0
return [array get x]
}
使用示例:
% set a(0) -1
% set a(1) 1
% parray a
a(0) = -1
a(1) = 1
% array set b [someProc [array get a]]
% parray b
b(0) = -1
b(1) = 1
b(5) = 0
從Tcl 8.5開始,您可以像字典一樣傳遞數組類似的值(通過'dict'命令操縱)。 'array get'命令產生一個字典,'array set'命令使用一個。 –
是有可能通過一個循環來添加元素到列表?像追加? – Roby
是的,非常容易。用於例如對於{set i 1} {$ i <= 10} {incr i} {lappend l1 $ i} – TrojanName