TCL变量名替换

时间:2013-06-10 12:02:27

标签: tcl variable-assignment substitution

我有几个清单:

AllMaxMins_LC1 AllMaxMins_LC2 AllMaxMins_LC3等等

现在我想通过这样的每个列表:

for {set i 1} {$i < 10} {incr i} {
   foreach SubList $AllMaxMins_LC$i { 
   # do something
    }
}

我知道我尝试它的方式不起作用,但我怎样才能正确实现这样的替换呢?

2 个答案:

答案 0 :(得分:2)

你可以,例如使用set命令而不使用第二个参数来访问AllMaxMins_LC$i变量的内容。 E.g:

for {set i 1} {$i < 10} {incr i} {
   set SubList [set AllMaxMins_LC$i]
   foreach element $SubList { 
     # do something
   }
}

答案 1 :(得分:1)

我很高兴您找到了解决问题的答案。

但是,如果你能让你的例子变得更复杂,我们可能会提供更多的帮助。按照目前的情况,你没有理由选择首先列出几个列表,因为你显然会将每个列表的内容视为相同。

还不清楚为什么你会围绕一切进行for {set i 0} {$i < 10} {incr i}循环。

如果你这样做,实际上有三个列表,每个列表有10个元素,你可能想要处理每个列表中的第一个元素,然后是第二个元素,然后是第三个元素等等。在这种情况下,一个好的赌注将是

foreach maxMin_1 $AllMaxMIns_LC1 maxMin_2 $allMaxMins_LC2 maxMin_3 $allMaxMins_LC3 {
    # do somthing
}