Tcl 调用编号变量

Tcl calling numbered variable

在 Tcl 中,我在循环中为编号变量赋值。 我如何在另一个循环中调用这些变量

for {set colNum 1} {$colNum < 37} {incr colNum} {
    set Col$colNum 0
}   
for {set colNum 1} {$colNum < 37} {incr colNum} {
    puts "$Col$colNum"
}

如果他们在同一个命名空间,那么你可以这样使用set

for {set colNum 1} {$colNum < 37} {incr colNum} {
    set Col$colNum 0
}   
for {set colNum 1} {$colNum < 37} {incr colNum} {
    puts [set Col$colNum]
}

不过,通常情况下,您可能希望避免这样做,而是使用 arrays:

for {set colNum 1} {$colNum < 37} {incr colNum} {
    set Col($colNum) 0
}   
for {set colNum 1} {$colNum < 37} {incr colNum} {
    puts $Col($colNum)
}

或者使用 upvar 创建一个别名(在下面的示例中,我使用 upvar 到全局命名空间 #0):

for {set colNum 1} {$colNum < 37} {incr colNum} {
    set Col$colNum 0
}   
for {set colNum 1} {$colNum < 37} {incr colNum} {
    upvar #0 Col$colNum currentCol
    puts $currentCol
}