返回数组列表

时间:2011-08-03 11:39:23

标签: arrays list tcl tk

TCL TK与列表和数组的区别在哪里? 我创建了一个包含3个数组的列表。

喜欢循环中的这个

set x($idx) 1
incr idx

后来我想返回“ret”对象

list set ret { $x $x2 $x3 }

并使用

再次解析它们
lassign $data x x2 x3

但这不会起作用...... :( 有人可以再帮我一次..该死的...:D:D

纠正我,如果我不对,它不可能建立一个2dim列表或数组?

2 个答案:

答案 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