Arrays 返回数组列表

Arrays 返回数组列表,arrays,list,tcl,tk,Arrays,List,Tcl,Tk,TCL TK与列表和数组的区别在哪里? 我创建了一个包含3个数组的列表 就像这个循环中的一样 set x($idx) 1 incr idx 稍后我想返回“ret”对象 并使用 lassign $data x x2 x3 但这行不通( 有人能再帮我一次吗..该死的tcl-tk…:D:D 如果im不正确,请更正我,不可能构建2dim列表或数组?您的数组称为x-您可以通过集合x(1),集合x(2)等引用其元素。$x2和$x3在这种情况下没有任何意义 如果需要二维数组,可以在TCL中模拟它,如下所

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

就像这个循环中的一样

set x($idx) 1
incr idx
稍后我想返回“ret”对象

并使用

lassign $data x x2 x3
但这行不通( 有人能再帮我一次吗..该死的tcl-tk…:D:D


如果im不正确,请更正我,不可能构建2dim列表或数组?

您的数组称为x-您可以通过
集合x(1)
集合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]

您可以使用
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

是否可以通过循环(如append)将元素添加到列表中?是的,非常简单。例如,对于Tcl 8.5以后的{set i 1}{$i,您可以将类似数组的值作为字典传递(通过
dict
命令操作)。
% 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