0

TCLのグローバル変数について質問があります。

set gvar "abc"

proc justTest {} {
    global gvar
    puts $global
}

変数がグローバル空間で宣言されている場合、globalキーワードを使用してproc内のグローバル変数にアクセスする必要がありますが、グローバル変数が宣言されていない場合global、関数内でキーワードを使用するとどうなりますか?例えば:

グローバル変数は宣言されていません

proc justTest {} {
        global gvar
        set here $gvar
        puts $here
    }

では、どうなるのでしょうか。

4

2 に答える 2

2

宣言されていないローカル変数にアクセスしようとした場合と同じです。

can't read "gvar": no such variable

関連する注意点としてset、proc内から変数を使用すると、メインスコープから変数にアクセスできるようになります(もちろんprocを呼び出した後)

于 2012-09-21T13:55:16.957 に答える
2

ケース1:グローバル変数を参照している

この場合、その値を使用していますが、設定はしていません。procを定義gvarする前にグローバル変数を設定する必要はありません。procを呼び出す前に設定する必要があるだけです。事前に設定しないとエラーになります。gvargvar

ケース2:グローバル変数の値を設定します

この場合、procを呼び出す前にグローバル変数を作成する必要はありません。procを呼び出すと、グローバル変数が作成されて使用可能になります。

于 2012-09-21T15:58:55.397 に答える