【问题标题】:Saving an array in Tcl在 Tcl 中保存数组
【发布时间】:2021-01-31 19:59:41
【问题描述】:

我的代码中有一个循环调用的过程。在这个过程中,我想将三个变量存储在一个数组中,所以最后我可以将数组保存在一个文本文件中。我怎样才能做到这一点? 例子: 主要代码:

for {set j 1} {$j<=[llength $Floor]} {incr j} {

myProc $matTag $j ........

}



proc myProc {....} {

 set Capacity($matTag) "$matTag $thetay $thetaP"

}

我在我的主代码中使用了这个过程,最后,如果我可以访问数组容量,我可以保存它。但这在 proc 中不起作用。

【问题讨论】:

  • 你可能需要在过程中添加global Capacity
  • 您还需要将值保存到列表中,而不是字符串:set Capacity($key) [list $val1 $val2 $val3] - 如果任何值包含空格,那么使用字符串将无法提取原始值值。

标签: arrays loops save tcl proc


【解决方案1】:

所有 Tcl 变量,包括数组,在默认情况下都被限定在它们的过程(或 lambda 术语或方法)内。如果你想要别的东西,你必须明确要求它。有几种方法可以做到这一点(globalupvarvariablenamespace upvar);您可能需要的是global,它(有效地)将一个或多个变量转换为全局变量:

proc myProc {....} {
    global Capacity

    set Capacity($matTag) "$matTag $thetay $thetaP"
}

通常,global 位于过程的顶部,如上所示。不一定是这样,但如果是这样,代码往往更具可读性。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-06-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多