是否可以在TCL中创建列表数组?

时间:2013-09-05 13:43:11

标签: arrays list tcl

我想在tcl中使用一个列表数组。这是我初始化它的方式:

for {set i 0} {$i<5} {incr i} {
     set defer_req$i {}
}

工作正常。但是当我在程序中使用这些列表时,它会给出一个错误“无法读取defer_req,没有这样的变量”。请帮帮我

2 个答案:

答案 0 :(得分:4)

您尚未创建数组。您已经创建了一组变量,其公共前缀为“defer_req”,并带有数字后缀。正如Tcl手册的variable syntax部分所述,数组寻址使用括号。所以你的任务说明应该是

set defer_req($i) {}

在以后使用它的代码中,你可以使用类似的东西:

puts $defer_req($memberName)

您不必使用数组 - 您可以保留代码,创建一组类似命名的变量。在这种情况下,使用您需要的值:

puts [set defer_req$memberName]

首先运行set语句(大括号内的部分)并将$ membername扩展为后缀,创建完整的变量名称。然后只有一个参数的set command返回命名变量的值。

天真版本($ defer_req $ memberName)将尝试替换名为defer_req的变量的值,并将其值与名为memberName的变量的值相连接。

答案 1 :(得分:1)

 array set ar {}
 set ar(key) {}
 for {set i 0} {$i < 100} {incr i} {
   lappend ar(key) $i
 }
 puts $ar(key)