TCL变量名替换

TCL变量名替换,tcl,variable-assignment,substitution,Tcl,Variable Assignment,Substitution,我有几个清单: AllMaxMins\u LC1 AllMaxMins\u LC2 AllMaxMins\u LC3等 现在我想像这样浏览每个列表: for {set i 1} {$i < 10} {incr i} { foreach SubList $AllMaxMins_LC$i { # do something } } 对于{set i 1}{$i

我有几个清单:

AllMaxMins\u LC1 AllMaxMins\u LC2 AllMaxMins\u LC3等

现在我想像这样浏览每个列表:

for {set i 1} {$i < 10} {incr i} {
   foreach SubList $AllMaxMins_LC$i { 
   # do something
    }
}
对于{set i 1}{$i<10}{incr i}{
foreach子列表$AllMaxMins_LC$i{
#做点什么
}
}

我知道我尝试的方法不起作用,但我如何才能正确地实现这种替换?

例如,您可以使用
set
命令,而无需第二个参数来访问
AllMaxMins\u LC$I
变量的内容。例如:

for {set i 1} {$i < 10} {incr i} {
   set SubList [set AllMaxMins_LC$i]
   foreach element $SubList { 
     # do something
   }
}
对于{set i 1}{$i<10}{incr i}{
设置子列表[设置所有最大值\u LC$i]
foreach元素$SubList{
#做点什么
}
}

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

然而,如果你能让你的例子稍微复杂一点,我们可能会提供更多的帮助。就目前情况而言,没有理由在第一时间选择多个列表,因为显然,您会对每个列表的内容一视同仁

同样不清楚的是,为什么在所有东西周围都有一个{set i 0}{$i<10}{incr i}循环

如果有,实际上有三个列表,每个列表有10个元素,您可能希望处理每个列表中的第一个元素,然后是第二个,然后是第三个等等。在这种情况下,最好的选择是

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

这种动态变量名方案实际上需要一个数组:
AllMaxMins_LC(1),AllMaxMins_LC(3),AllMaxMins_LC(3),…
,然后
foreach键[数组名AllMaxMins_LC]{foreach子列表$AllMaxMins_LC($key).