1. ホーム
  2. javascript

[解決済み] JavaScriptのカレー:実用性は?

2022-05-01 22:44:07

質問

まだカレーを理解できていないようです。何をするのか、どうすればいいのかは理解しています。ただ、それを使う場面が思い浮かばないのです。

JavaScriptでcurryingを使っているところ(または主なライブラリで使っているところ)はどこですか?DOM操作や一般的なアプリケーションの開発例など歓迎します。

回答の一例 は、アニメーションについて触れています。のような関数があります。 slideUp , fadeIn は要素を引数として取り、通常はデフォルトの「アニメーション関数」を組み込んだ高次関数を返す curried 関数です。なぜ、このような方法が、単にデフォルトで高次の関数を適用するよりも良いのでしょうか?

これを使うことによる欠点はありますか?

リクエストにお応えして、JavaScriptのcurryingに関する良いリソースをいくつかご紹介します。

コメントで出てきたものは随時追加していきます。


つまり、回答によると、curryingと部分適用一般は利便性の高い技術であるということですね。

同じ構成で高位関数を呼び出して頻繁に「洗練」する場合、高位関数をカレーにして(あるいはResigのパーシャルを使って)、シンプルで簡潔なヘルパーメソッドを作成することができます。

どのように解決するのか?

ハンク・ゲイ

EmbiggensTheMindさんのコメントを受けて。

という例は思いつきません。 キュッキュッ -これは、複数の引数を持つ関数呼び出しを、それぞれの呼び出しに対して1つの引数を持つ関数呼び出しのチェーンに変換するテクニックですが、JavaScriptは1つの関数呼び出しで複数の引数をサポートしています。

JavaScriptでは(ラムダ計算ではなく)他のほとんどの実際の言語でもそうだと思いますが、一般的に部分適用と関連付けられています。ジョン・レシグ は、より良い説明をしています。 しかし、要は、2つ以上の引数に適用されるロジックがあり、そのうちのいくつかの引数の値しか知らないということです。

部分的な適用/急送を使用して、これらの既知の値を修正し、未知の値のみを受け入れる関数を返すことができます。これは、同じJavaScriptの組み込み関数を、1つの値を除いて何度も何度も呼び出していた場合に、同じことを繰り返さないようにするための便利な方法です。Johnの例を見てみよう。

String.prototype.csv = String.prototype.split.partial(/,\s*/);
var results = "John, Resig, Boston".csv();
alert( (results[1] == "Resig") + " The text values were split properly" );