問題タブ [dynamic-scope]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
2 に答える
2338 参照

perl - Perlでレキシカル変数をローカライズできないのはなぜですか?

以下のPerlコードがあります。

$x が b() サブルーチン内にスコープを持っていても、なぜ Perl はそれをローカライズできないのですか?

0 投票する
2 に答える
617 参照

macros - マクロの動的スコープ

マクロ呼び出しに「到達」する動的スコープを実装するクリーンな方法はありますか? おそらくもっと重要なことは、たとえあったとしても、それを避けるべきでしょうか?

これが私がREPLで見ているものです:

このm-get-aマクロは私の実際の目標ではありません。これは、私が遭遇した問題を煮詰めたものです。macroexpandただし、 を使用してデバッグを続けたため、すべてが問題ないように見えるため、気付くのに少し時間がかかりました。

外側の呼び出しで (used from ) を実行macroexpand-allすると、「問題」(または場合によっては機能) は、動的バインディングが取得される前に評価されることであると考えるようになります。clojure.walkbinding(m-get-a)

回避策での私の亀裂は次のとおりです。

関連する動的バインディングを使用して単一のマクロ式を評価します。しかし、マクロで使用するのは好きではありませんmacroexpand。それは間違っているようです。また、マクロでシンボルを解決するのも間違っているようですeval

最終的に、qgame と呼ばれる「言語」用の比較的軽量なインタープリターを作成しています。インタープリター実行のコンテキスト外で動的レンダリング関数を定義できるようにしたいと考えています。レンダリング関数は、順次命令呼び出しと中間状態の視覚化を実行できます。インタープリターの実行を処理するためにマクロを使用していました。今のところ、実際にはマクロをまったく使用しないように切り替えており、実行関数の引数としてレンダラー関数もあります。とにかく、正直なところ、その方がずっと簡単に思えます。

しかし、私はまだ興味があります。マクロが動的バインディングにアクセスできないのは、Clojure の意図した機能ですか? とにかく(ダークマジックに頼らずに)回避することは可能ですか?そうすることのリスクは何ですか?

0 投票する
0 に答える
129 参照

language-agnostic - 静的スコープと動的スコープ

私はこのプログラムを持っています:

  1. 静的スコープでは、sub1 の a と b がメインですか?
  2. 動的スコープとチェーン: メイン → サブ → サブ → サブ 1。sub1 で使用される変数 a と b はどれですか?
0 投票する
2 に答える
657 参照

pseudocode - 動的スコープを使用したこの (C に似た) 疑似コードの出力は何ですか?

DYNAMIC SCOPING を使用した特定の擬似コードの出力はどうなるでしょうか? ここで、出力される x の値を知りたいと思います。

これは、C に似ているが動的スコープを持つ言語の単純な擬似コードです。

0 投票する
1 に答える
62 参照

perl - 「クロージャースコープ」内でラムダを実行する方法は?

これはどのように機能しますか?

つまり、 $driver_cr が $constant なしでアクセスできる方法は次のとおりです。

  1. $constant を引数としてドライバーに渡す &$driver_cr($constant)
  2. $constant のスコープをグローバルに変更するour $constant = "abcd";
  3. 共通ブロックを作成し、ベースから $constant を移動:

    /li>
0 投票する
0 に答える
85 参照

javascript - 各評価方向の動的スコープ

次の [任意の言語ですが、これは ALGOL だと思います] プログラムが与えられた場合:

JavaScript を使用して両方向 (左から右に評価し、次に右から左に評価) で動的スコープを使用してプログラム全体で値を表示し、対話的に値を変更して何が起こるかを確認するにはどうすればよいでしょうか?

出力の値が求められるこのようないくつかの問題では、学習が少し遅くなりますが、プログラム全体で値の状態が表示されず、特にインタラクティブに遊ぶことができる例では、理解を深めようとしています。

左から右への静的スコープ用のplnkrと、右から左への静的スコープ
plnkrを作成しました
。インタラクティブな回答を気軽にフォークしてください:)。

0 投票する
1 に答える
272 参照

html - angularjsで返される動的スコープにアクセスする方法

関数への入力パラメーターの1つに基づいてスコープ変数を動的に返す単一のangular js関数が必要です。コントローラー関数については、次のような動的スコープを返す方法の例をいくつか見つけました

$scope[attributeId] = data.response; (attributeId は入力パラメーター、data.response は配列)

質問は、HTML でそのようなスコープ変数を使用する方法ですか? このような選択コントロールがあり、スコープで返された値をドロップダウンに入力します。そのような場合、モデルとオプションとして指定する必要があります。

例は本当に役に立ちます。

0 投票する
2 に答える
151 参照

scope - Common Lisp のクロージャによって、囲んでいる関数への引数がキャプチャされないのはなぜですか?

test.lisp:

そしてREPLで:

Common Lisp は最近では字句的にスコープされるはずだと思っていたのに、 の値がvar1の内部ラムダによってキャプチャされないのはなぜtestですか? キャプチャされていることを確認するにはどうすればよいですか?