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)
}