TCL TK与列表和数组的区别在哪里? 我创建了一个包含3个数组的列表。
喜欢循环中的这个
set x($idx) 1
incr idx
后来我想返回“ret”对象
list set ret { $x $x2 $x3 }
并使用
再次解析它们lassign $data x x2 x3
但这不会起作用...... :( 有人可以再帮我一次..该死的...:D:D
纠正我,如果我不对,它不可能建立一个2dim列表或数组?
答案 0 :(得分:2)
您的数组名为 x - 您可以通过set x(1)
,set x(2)
等来引用其元素。在这种情况下,$ x2和$ x3没有任何意义。
如果你想要一个二维数组,你可以在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]
答案 1 :(得分:1)
您可以使用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