1

次のコードを検討してください。

x = 10
10.times{    
    x++
}
assert ​binding.getVariable("x") == 20

これまでのところ、これが上記のコードで起こっていることであると懸念しています。Scriptクラスには、x値を持つ変数への参照があり、から変数にアクセスするクロージャーを10呼び出します。したがって、基本的にスコープはクラスごとに行われます。timesxScriptxScript

しかし、いつbinding写真に入ったのだろうか?ある意味、私は電話new Binding()も何もしていませんが、まだそこにあります。

私はそれと少し混乱しています。の正確な用途はbinding何ですか? Scriptクラスは を作成しますか?bindingそうであれば、それがメソッドx内のスコープを管理するtimes方法ですか?

前もって感謝します。

4

1 に答える 1

2

スクリプト クラスは、構築時に新しいバインディングを構築します。

Scriptのコンストラクターでそれを行うことがわかります

于 2012-08-16T07:36:45.577 に答える