5

upvar 0とTCLの違いupvar 1、リアルタイムでの使用方法を教えてください。親切に、誰かが例を挙げて説明すると、より明確になります。

4

3 に答える 3

1

分かりました例は違いを非常に明確にするでしょう:

関数 test_upvar1 があるとしましょう:

proc test_upvar1 {} {
    upvar 1 a b
    incr b
}

関数 test_upvar0:

proc test_upvar0 {} {
    upvar 0 a b
    incr b
}

次に、変数 a を設定し、両方の関数を呼び出して何が起こるかを確認します。

set a 5
test_upvar1

これは6を返します

set a 5
test_upvar0

1を返します

これは、同じ実行フレーム 1 の実行フレーム 0 リンクをゼロと 1 フレームで選択するために発生します。

http://wiki.tcl.tk/1508を参照してください。

于 2015-05-12T11:59:15.643 に答える