1

我有一个这样的脚本:

proc subProc1 { } {
    puts $var1
}
proc subProc2 { } {
    puts $var2
}

proc mainProc { args } {
    # Define many variables
    subProc1
    subProc2
    #etc.
}

我希望 subProc1 和 subProc2 在 mainProc 中定义变量。我可以将它们作为参数传递,但这是很多参数,我想避免这种情况。

我尝试使用 upvar 命令,将这一行添加到我的 subProcs :

subProc1 { } {
    upvar $var1 var1 $var2 var2 ;#etc
    puts $var1
    # etc.
}

但是我有“没有这样的变量”错误消息,而且有这样的大行并不好

我刚刚阅读了有关命名空间的信息,但我并不真正了解如何使用它(另外我不确定这个概念,所以它真的适合我的用例吗?)

4

1 回答 1

1

upvar是正确的工具。其他命令可以用upvar.

但是你怎么称呼你做错了upvar。您必须使用变量名称,而不是它的值(这将引发“没有这样的变量”错误)。

upvar var1 var1 var2 var2 ;#...

我会考虑使用一些不同的方式来存储数据,也许是字典或数组?
这将使传递变量更容易。

于 2013-12-31T02:26:47.480 回答