問題タブ [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 投票する
2 に答える
1353 参照

c++ - C++ で匿名のオンザフライ クラス (インターフェイスの実装) を作成できますか?

C++ で、その場でインターフェイスの実装を作成できますか (ローカル スコープ変数をバインドするのが理想的です)。それをより適切に説明する方法がわからないので、コードを次のように (大まかに) 表示したいと思います。

ここで 2 つの質問をしていることに気付きました。このような匿名クラスを作成できますか。また、ローカル スコープから変数をバインドできますか (myName を参照したように)。しかし、それが役立つためには両方が必要です。

上記ができない場合、簡潔さ/ボイラープレートの欠如の観点から、たとえばC++ 11ラムダなどを使用することに最も近いものは何ですか。

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

ruby - 第一級関数としての Ruby 匿名クラス

Ruby にはファースト クラスの関数はありません。プロシージャとラムダがありますが、これらはかなりのオーバーヘッドを必要とすることで有名です。(Python には、明らかにオーバーヘッドのないファースト クラスの関数があります。)次のように、匿名クラスを使用することで、ファースト クラスの関数をもう少し作業でシミュレートできることに気付きました。

誰かがより良い方法を知っていますか?

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

scheme - 関数を新しいシンボルにコピーするにはどうすればよいですか?

Common Lisp の関数のコピーについて質問があります。

スキームでは、次のようにします。

Common Lispでこれを行うにはどうすればよいですか?

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

c++ - A への別のパラメーターに基づいて異なる署名を持つ可能性があるテンプレート化された関数 A に関数を渡すにはどうすればよいですか?

型を使用してテンプレートを作成し、その型を含むテンプレート引数を持つ関数を渡したいと思います。

これが私が現在持っているものです:

これは機能しますが、関数の呼び出し元に余分な冗長性があるように感じます。理想的には、次のような呼び出しが必要です。

Print 関数の呼び出しを簡素化する方法はありますか?

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

python - 第一級に割り当てられた機能の文書化

次のように、Python 関数のファーストクラスの性質を利用して定義された関数があります。

定義された関数に docstring をそのまま追加する方法が必要です。または、通常の方法で docstring を記述できるように、より一般的な形式を使用して同じことを実現する必要があります。

関数が次のように呼び出されたときに機能します

しかし、その後、メソッドを呼び出すことができなくなります。たとえば、

frompyfuncこれは、 から派生した を使用すると、関数がよりクラスのようになるためだと思いufuncます。

関数ではなくクラスを定義する必要があるかもしれないと考えていますが、方法がわかりません。通常どおり docstring を簡単に追加できるので、それで問題ありません。

元の方法は機能しますが、簡単に文書化できないため、これにタグを付けましcoding-styleた。タイトルが明確でない場合は申し訳ありませんが、これを説明する正しい語彙がわかりません。

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

f# - 暗黙のプログラミングによる F# インターフェイスの実装

暗黙のプログラミングからのアイデアは、回避できる場合は関数に引数を適用しないことです。

関数がファースト クラスのメンバーである場合、F# でこれをコンパイルできないのはなぜですか?

コンパイルエラーが発生します...

このオーバーライドに対応する抽象プロパティが見つかりませんでした

これはコンパイルする必要があると思います。adder.Add明確に実装されIAdder.Addており、受け入れられるはずです。