我想在 tcl 中使用列表数组。这就是我初始化它的方式:
for {set i 0} {$i<5} {incr i} {
set defer_req$i {}
}
它工作正常。但是当我在程序中使用这些列表时,它会给出一个错误“无法读取 defer_req,没有这样的变量”。请帮帮我
您尚未创建数组。您已经创建了一组具有公共前缀“defer_req”和数字后缀的变量。正如 Tcl 手册的变量语法部分所给出的,数组寻址使用括号。所以你的赋值语句应该是
set defer_req($i) {}
在以后使用它的代码中,您可能会使用类似的东西:
puts $defer_req($memberName)
您不必使用数组 - 您可以保留代码原样,创建一组类似命名的变量。在这种情况下,要使用您需要的值:
puts [set defer_req$memberName]
它首先运行 set 语句(大括号内的部分)并将 $membername 扩展为创建完整变量名的后缀。然后只有一个参数的set 命令返回命名变量的值。
简单的版本 ($defer_req$memberName) 会尝试替换名为 defer_req 的变量的值,并将其值与名为 memberName 的变量的值连接起来。
array set ar {}
set ar(key) {}
for {set i 0} {$i < 100} {incr i} {
lappend ar(key) $i
}
puts $ar(key)