返回数组列表

发布于 2024-11-27 22:57:54 字数 346 浏览 2 评论 0原文

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 列表或数组?

where is the difference in TCL TK with list and array ?
I created a list of 3 arrays.

like this one in a loop

set x($idx) 1
incr idx

and later i want to return the "ret" object

list set ret { $x $x2 $x3 }

and parse them again with

lassign $data x x2 x3

but this wont work... :(
could someone please help me again.. damn tcl tk... :D:D

correct me if im not right, its not possible to build a 2dim list or array ?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

提笔书几行 2024-12-04 22:57:54

您的数组称为 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]

Your array is called x - you can refer to its elements by set x(1) , set x(2) etc. $x2 and $x3 have no meanings in this case.

If you want a 2 dimensional array, you can simulate it in TCL as follows:

set a(1,1) 0 ;# set element 1,1 to 0
set a(1,2) 5 ;# set element 1,2 to 5

It might be easier if you just use a list of lists

set l1 [list a b c]
set l2 [list d e f]
set lol [list $l1 $l2]
椒妓 2024-12-04 22:57:54

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

You can use array get/set to pass arrays as procedure arguments / return values. For example:

proc someProc {arr} {
  array set x $arr
  set x(5) 0
  return [array get x]
}

Example of usage:

% 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
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文