[解決済み] JavaScriptのカレー:実用性は?
質問
まだカレーを理解できていないようです。何をするのか、どうすればいいのかは理解しています。ただ、それを使う場面が思い浮かばないのです。
JavaScriptでcurryingを使っているところ(または主なライブラリで使っているところ)はどこですか?DOM操作や一般的なアプリケーションの開発例など歓迎します。
回答の一例
は、アニメーションについて触れています。のような関数があります。
slideUp
,
fadeIn
は要素を引数として取り、通常はデフォルトの「アニメーション関数」を組み込んだ高次関数を返す curried 関数です。なぜ、このような方法が、単にデフォルトで高次の関数を適用するよりも良いのでしょうか?
これを使うことによる欠点はありますか?
リクエストにお応えして、JavaScriptのcurryingに関する良いリソースをいくつかご紹介します。
- http://www.dustindiaz.com/javascript-curry/
- Crockford, Douglas (2008年) JavaScript。良いところ
- http://www.svendtofte.com/code/curried_javascript/ (MLに寄り道するので、"A crash course in ML" から全部飛ばして "How to write curried JavaScript" からやり直してください)
- http://web.archive.org/web/20111217011630/http://blog.morrisjohns.com:80/javascript_closures_for_dummies
- JavaScriptのクロージャはどのように機能するのですか?
- http://ejohn.org/blog/partial-functions-in-javascript (いつも通りレシグさんオンザマネー)
- http://benalman.com/news/2010/09/partial-application-in-javascript/
コメントで出てきたものは随時追加していきます。
つまり、回答によると、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" );
関連
-
要素ツリー制御によるvueTreeテーブル
-
[解決済み] JavaScriptで "use strict "は何をするのか、その根拠は?
-
[解決済み] JavaScriptでメールアドレスを検証するのに最適な方法は何ですか?
-
[解決済み] JavaScriptでオブジェクトをディープクローンする最も効率的な方法は何ですか?
-
[解決済み] とは何ですか! (not not)演算子とは何ですか?
-
[解決済み] JavaScriptで現在のURLを取得する?
-
[解決済み] callとapplyの違いは何ですか?
-
[解決済み] ループ内のJavaScriptクロージャ - シンプルな実用例
-
[解決済み] JavaScriptの変数のスコープとは何ですか?
-
[解決済み】JavaScript版sleep()とは?)
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
要素ツリー制御によるvueTreeテーブル
-
JavaScriptにおけるマクロタスクとミクロタスクの詳細
-
jsを使った簡単な照明スイッチのコード
-
Vue+ElementUIによる大規模なフォームの処理例
-
jQueryのコピーオブジェクトの説明
-
[解決済み] Error : 未定義のプロパティ 'map' を読み取ることができません。
-
[解決済み】SyntaxError: JSONの位置1に予期しないトークンoがある。
-
[解決済み】TypeErrorの解決方法。未定義またはヌルをオブジェクトに変換できない
-
[解決済み】JavaScriptでインラインIF文の書き方は?
-
HTML5 LocalStorage ローカルストレージとセッションストレージの使用法