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

tcl读取具有相同前缀的变量,tcl,Tcl,我有一个前缀相同的变量。例如: set prefix1Postfix 89 set prefix2Postfix 56 set prefix3Postfix 56 那么,是否可以通过以下方式对其进行迭代: set l [list prefix1 prefix2 prefix3] foreach item $l { puts "item = ${{$l}Postfix}" } 不,Tcl将{$l部分解释为它遇到的第一个打开和关闭大括号之后的变量: puts "item = ${{

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

set prefix1Postfix 89
set prefix2Postfix 56 
set prefix3Postfix 56
那么,是否可以通过以下方式对其进行迭代:

set l [list prefix1 prefix2 prefix3]

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

不,Tcl将
{$l
部分解释为它遇到的第一个打开和关闭大括号之后的变量:

puts "item = ${{$l}Postfix}"
              ^---^
变量也应该是
$item
),大括号还防止替换,因此如果使用大括号,Tcl将查找literal
$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]"
}

不,Tcl将
{$l
部分解释为它遇到的第一个打开和关闭大括号之后的变量:

puts "item = ${{$l}Postfix}"
              ^---^
变量也应该是
$item
),大括号还防止替换,因此如果使用大括号,Tcl将查找literal
$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]"
}

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

set prefixPostfix(1) 89
set prefixPostfix(2) 56 
set prefixPostfix(3) 56

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

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

set prefixPostfix(1) 89
set prefixPostfix(2) 56 
set prefixPostfix(3) 56

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