2012-02-05 6 views
6

2つのコードスニペット(最初の版画「ローカルevalの」第二のプリント「グローバルevalの」)をご検討くださいglobalEval === evaltrueと評価されても、の名前が異なるため、globalEvalevalは異なる動作をします。 (評価は正確にevalと書かれている場合にのみローカルになります)区別地元のevalは

2つのエバールを区別するにはどうすればよいですか?ビヘイビアを推測するために可変ラベルを抽出する方法はありますか?

+0

@MattiVirkkunen:私は[this](http://stackoverflow.com/questions/7223517/pure-function-given-strictly-equal-arguments-yielding-non-strictly-equalの例を構築しようとしています。 -結果)。私は近くにいるが、まだそこにはない。 – Randomblue

+0

なぜ[あなたの前の質問](http://stackoverflow.com/questions/9145385/accessing-local-eval-inside-function-scope)に固執していませんか? –

+0

@amnotiam:それはまあまあですが、私は混乱しました。私はそれを削除することを望む。 – Randomblue

答えて

2

興味深い。しかし、あなたがどこで/ evalへの参照が定義されているかを制御しているので、それらを区別する方法が分かります。たとえば、 "関数ポインタ"を持ち、スコープを示すオブジェクトを持っています。定義すれば、どこにいるのか分かります。

I.e. myEvaluator.scopeは、評価スコープがどこにキャプチャされたかについての情報を教えてくれますし、myEvaluator.evalを使って評価することができます。