私はかなり初心者で、argv を使用する名前空間にいくつかの変数を設定し、名前空間の外部の proc からそれらを呼び出そうとしていますが、これを行う方法を理解するのに苦労しています。私はこのようなコードを使用しようとしています (しかし、明らかにこれは間違った方法です):
namespace eval Ns {
variable spec [lindex $argv 1]
}
proc p {} {
set spec "::Ns::spec"
}
私はかなり初心者で、argv を使用する名前空間にいくつかの変数を設定し、名前空間の外部の proc からそれらを呼び出そうとしていますが、これを行う方法を理解するのに苦労しています。私はこのようなコードを使用しようとしています (しかし、明らかにこれは間違った方法です):
namespace eval Ns {
variable spec [lindex $argv 1]
}
proc p {} {
set spec "::Ns::spec"
}
The correct way is to use variable
:
proc p {} {
variable ::Ns::spec
# ...
}
Also possible is upvar
:
proc p {} {
upvar #0 ::Ns::spec spec
# ...
}
or (almost) like you did it:
proc p {} {
set spec $::Ns::spec
# ...
}
This last possibility will not change the variable if it is changed in the proc.