問題タブ [dynamic-binding]

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 投票する
1 に答える
145 参照

emacs - コンパイルモードの正規表現リストを一時的にオーバーライドする:動的バインディングの奇妙さ?

私は、アセンブラー、プログラマー、およびその他の外部プログラムへのさまざまな呼び出しを行うプログラムモードに取り組んでいます。私の狡猾な計画は、これらすべてを関数で処理し、実行中のプログラムに依存compileする明示的なものを渡すことでした。compile-command

この種のものは機能しているようで、さまざまな外部プログラムに特定のエラー正規表現を追加したいと考えています。1 つのオプションは、メジャー モードを変更compilation-error-regexp-alist-alistしてから、メジャー モードを に追加することcompilation-error-regexp-alistです。

ただし、私がやりたいことは、次のようなものです。

奇妙なことに、このバインディングは、コンパイル バッファーが解析/マークアップされる方法に影響を与えないようです。<my-regexp-and-numbers>バッファの前に手動でプッシュしてcompilation-error-regexp-alistから呼び出すと(compilation-mode t)、すべてが期待どおりにフォント化されます(したがって、正規表現が間違っていません)。ただし、上記のよう(compilation-mode t)にフォーム内に呼び出しを貼り付けてletも、何の影響もありません。

再現しやすいテストケースとして、これは惨めに失敗することを私は認識しています。誰もアイデアを持っていない場合は、例をハックしようとしますが、誰かが「ああ、そうです。それは評価されないからです」など.. .

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

php - 静的メソッドphpでの動的バインディング

特定のメソッドを挿入せずに、実際の(派生)クラスの名前を返す基本クラスに静的メトンが必要です。出来ますか?ありがとう

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

c++ - C ++では、フレンド関数を使用せずに、オブジェクトを介してプライベート関数を呼び出すにはどうすればよいですか?

私はC++で書かれたこのコードに出くわしました:

出力:

次の場合:

出力

Compiler Error.

なぜこれが起こっているのか誰かが説明できますか?最初のケースでは、プライベート関数がオブジェクトを介して呼び出されています。

0 投票する
6 に答える
2886 参照

java - 「抽象」のないJavaのランタイムポリモーフィズム?

私は、公式の Oracle チュートリアルを調べていました。ここでは、3 つのクラスのクラス階層の例を使用してポリモーフィズムの概念を紹介しています。Bicycle がスーパークラスで、MountainBike と RoadBike が 2 つのサブクラスです。

2 つのサブクラスが、Bicycle で宣言されたメソッド「printDescription」を、異なるバージョンを宣言することによってオーバーライドする方法を示しています。

そして最後に、このチュートリアルでは、Java 仮想マシン (JVM) が、各変数で参照されるオブジェクトの適切なメソッドを呼び出すことに言及しています。

しかし、ポリモーフィズムに関するチュートリアルでは、「抽象」クラスとメソッドの概念についてはどこにも言及されていません。BicycleのprintDescription()が「抽象的」と宣言されていない限り、実行時のポリモーフィズムはどのように達成されますか? つまり、この例を考えると、どのようなヒントに基づいて、コンパイラーはコンパイル時にメソッド呼び出しを参照型にバインドしないことを決定し、JVM が実行時に処理できるようにする必要があると考えているのでしょうか?

以下は使用例です。

0 投票する
3 に答える
1664 参照

emacs - Elisp の高階関数

Elisp で関数を返す関数を作成しました。

これを IELM で実行しようとすると、失敗します。

Lisp-1 と Lisp-2 の違いは何ですか? 私はコードをに変更しました

への呼び出し(funcall (singleton-set 5) 5)ですが、現在エラーは

*** Eval error *** Symbol's value as variable is void: elem

elisp:capture variable from inner function から、これは Emacs Lisp の動的バインディングによるものだと理解しています。

Emacs Lispで関数を返す関数を可能にする方法は? このメカニズムが Python、Scala、Clojure などの他の言語と異なる理由は何ですか?

関連する質問:

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

c++ - いくつかの動的バインディング

こんにちはエキスパートは、このような動的バインディングを行うことができます。objshapesはShapeと呼ばれる親クラスであり、Rectangleは子クラスです。子クラスがいくつかあるので、ユーザーが選択する形状に応じて、正しい形状をobjShapesにバインドする必要があります。だから私はこのようにバインドできると思いました。しかし、エラーが発生します。

誰かが助けてくれることを願っています。ありがとう

これは正しいです

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

c# - C#の動的バインディングとvoidメソッドの呼び出し

実行時の例外が避けられないのに、なぜコンパイラがこの式をコンパイルできるようにするのですか?

Dynamic Bindingvoidメソッドではうまくいくとは思わない

C#仕様が上記の式を動的にバインドされた式として参照している場合、次のメソッドがコンパイルされないのはなぜですか?

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

php - 派生したすべてのクラスではなく、派生クラスに対して静的な静的プロパティを作成することは可能ですか?

私はこのようなものを実装しようとしています:

これに似たクラス構造を持つ: (私はこれがうまくいかないことを知っています.)

兄弟間で共有されない子クラスごとに静的変数を作成するにはどうすればよいですか?

これを実行できるようにしたい理由は、親クラスから派生しているクライアントが上記の実装について心配する必要がなく、派生クラスごとに 1 回だけ発生するイベントを追跡できるようにするためです。追跡機能。ただし、上記のイベントが発生した場合、クライアントは確認できるはずです。

0 投票する
3 に答える
1156 参照

c - 動的スコープを使用した名前による呼び出し

静的/動的スコープに関する次の問題で立ち往生しています。

次のプログラムフラグメントは、グローバル変数を許可し、関数のネストされた宣言を許可しないプログラミング言語で記述されています。

Q1。プログラミング言語が静的スコープを使用し、必要に応じてパラメーターを渡すメカニズムを呼び出す場合、上記のプログラムによって出力される値は次のとおりです。

(A)115、220(B)25、220(C)25、15(D)115、105

Q2。プログラミング言語が動的スコープと名前による呼び出しパラメーター受け渡しメカニズムを使用する場合、上記のプログラムによって出力される値は次のとおりです。

(A)115、220(B)25、220(C)25、15(D)115、105

私の考え:

Q1:静的スコープであり、必要に応じて呼び出しられるため、xをi+jに置き換える必要があります。ただし、名前iの変数が既に存在するため、ローカル名の競合が発生します。したがって、それ(グローバルi)の名前が変更される可能性があります。たとえば、i1とすると、呼び出しは次のようになります。

Q2:動的スコープでは、最初にローカル関数で変数を検索し、次にローカル関数を呼び出した関数を検索し、次にその関数を呼び出した関数を検索し、以下同様に呼び出しスタックを検索します。

名前による呼び出しによると:

そして2番目の呼び出しは

この答えは正しいですか?(オプションにはありません)何か足りないものはありますか?(動的バインディングは可能性がありますか?)

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

c++ - オーバーロードとオーバーライドはどのように連携しますか?

オーバーロードとオーバーライドの基本は理解していますが、何かが私を混乱させています。簡単な例を使用して説明します。

  • クラス B には関数 X(B& b) があります
  • クラス D はクラス B を継承しています。
  • クラス D は、X を X(B& b) でオーバーライドし、X(D& d) でオーバーロードします。

次に、次のコードがあります。

の 3 行目と 4 行目で、test()呼び出す X() の実装と、発生している一般的なメカニズムを決定する方法がよくわかりません。