【问题标题】:Scope issue in TCL listTCL列表中的范围问题
【发布时间】:2021-11-12 18:00:39
【问题描述】:

我有一个全局声明的列表。

global triaAXCord 
set triAXCord {}

将值附加到此列表的过程 setCordinates。

proc setCordinates {AX} {
lappend triAXCord $AX
puts "$triAXCord"
}

puts 给出了插入的值。 但是当 $triAXCord 打印为空白列表时,从其他程序。由于列表是全局声明的,为什么值没有得到更新。

【问题讨论】:

    标签: scope tcl procedure


    【解决方案1】:

    在 proc 定义之外,您的 triAXCord 变量已经在全局范围内。无需明确声明它属于全局范围。

    在 proc 中,您处于 proc 的范围内,并且无法访问全局范围的变量,除非您在 proc 中明确说明它。这与默认情况下函数可以访问全局变量的 Python 不同。

    这两种方法中的任何一种都可以在 proc 中使用

    1. global triAXCord。这允许您在 proc 中使用 triAXCord 作为变量名。
    2. 在变量名前使用::前缀,如lappend ::triAXCord $AX

    如果您需要更灵活的变量名或范围,也可以使用 upvar

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-12-06
    • 2012-06-23
    • 2012-11-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多