我几乎是一个新手,我正在尝试在使用argv的命名空间中设置一些变量,然后从命名空间外的proc调用它们,但我无法理解如何操作这个。我正在尝试使用这样的代码(但显然这是错误的方法):
namespace eval Ns {
variable spec [lindex $argv 1]
}
proc p {} {
set spec "::Ns::spec"
}
答案 0 :(得分:1)
正确的方法是使用variable
:
proc p {} {
variable ::Ns::spec
# ...
}
也可以是upvar
:
proc p {} {
upvar #0 ::Ns::spec spec
# ...
}
或(差不多)就像你做的那样:
proc p {} {
set spec $::Ns::spec
# ...
}
如果在proc中更改了变量,则最后一种可能性不会更改变量。
答案 1 :(得分:0)
...或者拨打电话以返回值:
proc Ns::getspec { } {
variable spec
return spec;
}