tcl读取具有相同前缀的变量

时间:2013-05-30 06:56:08

标签: tcl

我有一个前缀相同的变量。例如:

set prefix1Postfix 89
set prefix2Postfix 56 
set prefix3Postfix 56

因此可以通过这种方式迭代它们:

set l [list prefix1 prefix2 prefix3]

foreach item $l {
     puts "item = ${{$l}Postfix}"
}

2 个答案:

答案 0 :(得分:3)

不,Tcl正在将{$l部分解释为它遇到的第一个开始和结束括号后的变量:

puts "item = ${{$l}Postfix}"
              ^---^

该变量也应该是$item;)大括号也会阻止替换,因此如果使用大括号,Tcl将查找文字$item

您可以使用的一种解决方法是为后缀指定变量:

set prefix1Postfix 89
set prefix2Postfix 56 
set prefix3Postfix 56

set l [list prefix1 prefix2 prefix3]
set p "Postfix"

foreach item $l {
     puts "item = [set $item$p]"
}

答案 1 :(得分:3)

在这种情况下,一般的建议是使用数组

更容易
set prefixPostfix(1) 89
set prefixPostfix(2) 56 
set prefixPostfix(3) 56

foreach key [array names prefixPostfix] {
    do something with $prefixPostfix($key)
}