いくつかの記事やブログでカリー化された関数への言及を見てきましたが、適切な説明 (または少なくとも意味をなす説明) を見つけることができません。
ベストアンサー1
カリー化とは、複数の引数を取る関数を、それぞれが 1 つの引数のみを取る一連の関数に分解することです。以下は JavaScript の例です。
function add (a, b) {
return a + b;
}
add(3, 4); // returns 7
a
これは、と の2 つの引数を受け取り、それらの合計を返す関数ですb
。この関数をカリー化します。
function add (a) {
return function (b) {
return a + b;
}
}
これは、1 つの引数 を受け取りa
、別の引数 を受け取る関数を返す関数でありb
、その関数はそれらの合計を返します。
add(3)(4); // returns 7
var add3 = add(3); // returns a function
add3(4); // returns 7
- 最初のステートメントは
7
、add(3, 4)
ステートメントと同様に を返します。 add3
2 番目のステートメントは、引数に追加するという新しい関数を定義します3
。これは、クロージャと呼ばれることもあります。- 3 番目のステートメントでは、
add3
演算を使用して を加算し3
、4
結果として 7 が生成されます。