JavaScriptのカリー化(Currying)の理解と使用法


カリー化の基本的な考え方は、関数を引数を複数受け取る代わりに、引数を一つずつ受け取る関数の連鎖として表現することです。これにより、部分適用やカリー化された関数の再利用が容易になります。

以下に、JavaScriptでのカリー化の方法と具体的なコード例を示します。

  1. 単純なカリー化の例:
function add(x) {
  return function(y) {
    return x + y;
  };
}
const add5 = add(5);
console.log(add5(3)); // 結果: 8

上記の例では、add関数をカリー化して、add5という新しい関数を生成しています。add5は引数として一つの数値を受け取り、それに5を加えた結果を返します。

  1. 複数の引数を受け取るカリー化の例:
function multiply(x) {
  return function(y) {
    return function(z) {
      return x * y * z;
    };
  };
}
const multiply2 = multiply(2);
const multiplyBy3 = multiply2(3);
console.log(multiplyBy3(4)); // 結果: 24

上記の例では、multiply関数をカリー化して、複数の引数を受け取る関数の連鎖を作っています。multiply2は引数として一つの数値を受け取り、それを2倍にした結果を返します。multiplyBy3は引数として一つの数値を受け取り、それを2倍して3倍した結果を返します。

  1. カリー化された関数の再利用:
function greet(greeting) {
  return function(name) {
    console.log(greeting + ', ' + name + '!');
  };
}
const greetHello = greet('Hello');
const greetGoodbye = greet('Goodbye');
greetHello('Alice'); // 結果: Hello, Alice!
greetGoodbye('Bob'); // 結果: Goodbye, Bob!

上記の例では、greet関数をカリー化して、異なる挨拶文を受け取る関数を生成しています。greetHelloは引数として一つの名前を受け取り、'Hello'と組み合わせて挨拶文を表示します。同様に、greetGoodbyeは引数として一つの名前を受け取り、'Goodbye'と組み合わせて挨拶文を表示します。

カリー化は、関数型プログラミングのパラダイムを活用するための強力な手法です。JavaScriptにおいても、カリー化は関数の再利用性や柔軟性を高めるための有用なテクニックです。ぜひこの記事を参考にして、JavaScriptでのカリー化の活用にチャレンジしてみてください。