자바스크립트에서 여러 개의 파라미터를 가진 함수를 Currying하는 방법은 무엇인가요?

예를 들어, 다음과 같은 여러 개의 파라미터를 받는 함수가 있다고 가정해봅시다.

function add(x, y, z) {
  return x + y + z;
}

이 함수를 Currying하여 각각의 파라미터를 받는 함수들의 연속으로 바꾸려면 다음과 같이 할 수 있습니다.

function curryAdd(x) {
  return function(y) {
    return function(z) {
      return x + y + z;
    };
  };
}

위에서 정의한 curryAdd 함수는 x를 받아 y를 받는 함수를 반환하고, 그 함수는 z를 받아 값을 계산하여 반환하는 구조입니다.

이제 Currying된 함수를 사용해보겠습니다.

const addOne = curryAdd(1);
const addTwo = addOne(2);
const result = addTwo(3);
console.log(result); // 6

const addFive = curryAdd(5);
console.log(addFive(10)(15)); // 30

Currying된 함수는 파라미터를 하나씩 받아 원하는 타이밍에 계산을 수행할 수 있습니다. 이는 코드의 재사용성을 높이고, 더욱 유연한 함수 작성이 가능하게 합니다.

따라서 Currying은 자바스크립트에서 여러 개의 파라미터를 가진 함수를 다룰 때 유용하게 사용할 수 있는 기술입니다.

#javascript #currying