我有一个这样的脚本:
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.
}
但我有"没有这样的变量"错误信息,并且像这样有一个巨大的行
并不好我刚读过有关命名空间的内容,但我并不真正理解如何使用它(加上我不确定理解这个概念,它是否真的适合我的用例?)
答案 0 :(得分:1)
upvar
是适合的工具。其他命令可以使用upvar
进行模拟。
但你怎么称错upvar
。你必须使用变量 name ,而不是它的值(它会抛出“没有这样的变量”错误)。
upvar var1 var1 var2 var2 ;#...
我会考虑使用一些不同的方式来存储数据,可能是字典还是数组? 这样可以更容易地传递变量。