Tcl 我们可以创建数组列表吗?如何创建?
我想创建一个列表,其中的每个元素都是一个数组,类似于C语言中的结构数组。Tcl 我们可以创建数组列表吗?如何创建?,tcl,Tcl,我想创建一个列表,其中的每个元素都是一个数组,类似于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 您不能创建数组列表,但可以创建功能相同的dict列表(从键到值的映射): 要作
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
您不能创建数组列表,但可以创建功能相同的dict列表(从键到值的映射): 要作为数组执行此操作,需要使用[array get]和[array set]将数组更改为字符串:
set si(eid) -1
set si(core) 0
set si(time) 0
lappend si_list [array get si]
然后把它拿出来
array set newsi [lindex $si_list]
puts $newsi(eid)
dict允许您直接处理{name-value}列表。您也可以使用tcllib中的包进行类似操作。在不包含dict的Tcl版本上执行此操作的一种方法是使用upvar 为此,请将数组变量的名称添加到列表中:
set si(eid) -1
set si(core) 0
set si(time) 0
lappend si_list "si"
然后,要恢复阵列,请执行以下操作:
upvar #0 [lindex $si_list 0] newsi
puts $newsi(eid)
对不起,我是tcl的新用户,没有听说过dict。。。是否需要为其包含任何特殊库?没有特殊库,但您确实需要运行tcl8.5或更高版本。8.4 IIRC(dict
dict
package)有一个后端口。我认为它可能不适合包含大量元素的大型列表,因为每个元素都必须有一个名称……但对于小型列表来说也可以。无论如何谢谢你!我不确定我是否理解,创建的每个数组都必须有一个名称,而您只是将数组的名称放入列表中。这与你在问题中试图做的有什么不同?
upvar #0 [lindex $si_list 0] newsi
puts $newsi(eid)