問題タブ [first-class-functions]

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

c# - メソッドのオーバーライドと OOP でのメソッド デリゲート/イベントの割り当て

これはちょっとおかしな質問です。それぞれに関連付けられた特定の機能を持つ一連のオブジェクト (設計時に既知) を作成したいと考えています。「デリゲート」を含むことができるオブジェクトのプロパティを指定することで、これを行うことができます。

または、抽象クラスを使用して、作成するオブジェクトごとにこれを実装することもできます。

これら 2 つの方法の実際の結果 (設計時と実行時の作成) はまったく異なることを認識しています。

アプリケーションに適した方法を選択するにはどうすればよいですか?

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

actionscript-3 - Actionscript: ExternalInterface.addCallback() はどのように機能しますか?

私は ActionScript にはかなり慣れていませんが、オブジェクト指向言語や手続き型言語全般については初めてというわけではありません。ただし、ActionScript の両方のカテゴリの機能の特定の組み合わせには、私は混乱します。

具体的には、 ExternalInterface.addCallback()のメカニズムについて混乱しています。メソッドのシグネチャは次のとおりです。

特に興味深いのは、次のドキュメントがあるクロージャー パラメーターです。

closure:Function — 呼び出す関数クロージャです。これは独立した関数である場合もあれば、オブジェクト インスタンスのメソッドを参照するメソッド クロージャである場合もあります。メソッド クロージャーを渡すことで、特定のオブジェクト インスタンスのメソッドにコールバックを向けることができます。

上記のことは、クロージャーが関数 (メソッドではない) にすぎないことを意味すると解釈します。これは、インスタンス化されたオブジェクトからのメソッド呼び出しを含むクロージャーである場合とそうでない場合があります。そのため、次のようなコード (同じドキュメント ページから取得) を見ると混乱します。

上記のコードは、インスタンス化されたオブジェクトを含むクロージャーでラップせずaddCallbackに、非静的メソッドであるto に挿入します。ext_testex_test

メソッドには簡単なコードが含まれていますが、メンバー変数などを含むステートメントが含まれている場合はどうなるでしょうか? 親オブジェクトがない場合、メソッドはどのように評価されますか?

さらに、(addCallback任意のメソッドの受け渡しが許可されているように見えるため) ドキュメントでは、渡されたメソッドに対するアクセス修飾子の影響について言及されていません。メソッドに private というラベルを付けた場合でも、それを addCallback に渡すことはできますか? どうしたんだ?

誰かがこれについて頭を包むのを手伝ってくれれば幸いです。

0 投票する
4 に答える
214 参照

java - ファーストクラス関数

したがって、次のような Func.java というインターフェースがあります。

次に、次のような mainClass.java というメイン クラスがあります。

メインメソッドでこの構成メソッドを呼び出す方法と、このコードが実際にどのようにコンパイルされるかはよくわかりません! つまり、これが機能するためにここでJavaジェネリックが必要ですか?

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

javascript - JavaScript でクロージャーを呼び出す場合、クロージャー コードを入力するときに新しい実行コンテキストが作成されますか?

以下のクロージャーの例に注目してください。

ダミー変数バインディング ("bar" 関数コードを実行する) を呼び出すとき、新しい実行コンテキストが作成されますか? ECMAScript 仕様では、関数コードを入力したときに何が起こるかが指定されていますが、これは関数/クロージャーへの参照であるため、実行コンテキストの作成/バインディング フェーズ全体を再度実行する必要があるかどうかはわかりませんでした。

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

c# - LINQ 関数に渡される関数のブレークイン

に渡される関数がありSelectます。しかし、上記の関数にブレークポイントを設定しても、プログラムは壊れません。

例:

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

java - 引数として渡されたオブジェクトの遅延初期化

オブジェクトの作成に非常に長い時間がかかるメソッドがあるとします。

オブジェクトをシリアライズおよびデシリアライズするヘルパー クラスもあります。

で指定されたシリアル化されたオブジェクトを最初にロードしようとする関数filenameが必要ですが、それが失敗した場合はオブジェクトを作成defaultします。次のようになります。

conditionalCreate関数が現在書かれている方法は、常に作成されます-必要な場合defaultにのみオブジェクトを作成したい.default

別の言語では、conditionalCreate関数は次のようになります。

さらに、オブジェクトの構築が必要な場合 (逆シリアル化が失敗した場合)、この既定のコンストラクターに引数を渡す方法が必要です。

Java 7でこのようなことは可能ですか?

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

powershell - PowerShell で関数 (引数付き) をパラメーターとして渡す

ScriptBlocks を使用して、PowerShell で引数なしの関数を渡すことに成功しました。ただし、関数に引数がある場合、これを機能させることはできません。PowerShell でこれを行う方法はありますか? (できればv2)

それで

コンソールに 0 を書き込みます。Apply は を呼び出しAddますが、引数を渡しません (つまり、デフォルトの [int] 値 0 と 0 を使用します)。