【问题标题】:Tcl calling numbered variableTcl 调用编号变量
【发布时间】:2019-09-09 15:07:02
【问题描述】:

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

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

【问题讨论】:

    标签: tcl


    【解决方案1】:

    如果它们在同一个命名空间中,那么你可以这样使用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
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-05-13
      • 1970-01-01
      • 2012-10-07
      • 2016-09-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-11-10
      相关资源
      最近更新 更多