Arrays 返回数组列表
TCL TK与列表和数组的区别在哪里? 我创建了一个包含3个数组的列表 就像这个循环中的一样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中模拟它,如下所
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