我们可以创建一个数组列表吗?如何创建?
我想创建一个列表,它的每个元素都是一个数组,类似于C语言中的结构体数组。
TCL可以做吗?如果可以怎么做?非常感谢!
我做了一些尝试,但失败了......
tcl>set si(eid) -1
tcl>set si(core) 0
tcl>set si(time) 0
tcl>lappend si_list "$si"
Error: can't read "si": variable is array
I want to create a list and each element of it is an array, similarly to an array of structs in C language.
Can it be done in TCL and how if it can? thanks very much!
I did some try but it failed...
tcl>set si(eid) -1
tcl>set si(core) 0
tcl>set si(time) 0
tcl>lappend si_list "$si"
Error: can't read "si": variable is array
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
您无法创建数组列表,但可以创建功能相同的字典列表(从键到值的映射):
要将其作为数组执行,您需要使用 [array get] 和 [array set] ] 将数组更改为字符串:
并将其返回,
字典可让您直接处理 {name value} 列表。
You can't create a list of arrays, but you can create a list of dicts which is functionally the same thing (a mapping from keys to values):
To do it as arrays you need to use [array get] and [array set] to change the array into a string:
And to get it back out
dicts let you work on the {name value} lists directly.
在不包含 dict 的 Tcl 版本上执行此操作的一种方法是使用 upvar。
为此,请将数组变量的名称添加到列表中:
然后要恢复数组,请执行以下操作:
One way to do this on versions of Tcl that don't include dict is to use upvar.
To do this, add the names of the array variables to your list:
Then to get your array back, do this:
您还可以使用 tcllib 中的 ::struct::record 包来实现类似的功能。
You could also use the ::struct::record package from tcllib for something like that.