0

私はかなり初心者で、argv を使用する名前空間にいくつかの変数を設定し、名前空間の外部の proc からそれらを呼び出そうとしていますが、これを行う方法を理解するのに苦労しています。私はこのようなコードを使用しようとしています (しかし、明らかにこれは間違った方法です):

namespace eval Ns {
    variable spec [lindex $argv 1]
}

proc p {} {
    set spec "::Ns::spec"

}
4

2 に答える 2

1

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.

于 2013-03-29T22:22:38.617 に答える