자바스크립트에서 Currying을 사용하여 함수의 파라미터를 어떻게 추출할 수 있나요?

먼저, Currying을 사용하여 파라미터를 추출할 함수를 생성해보겠습니다. 아래 예시 코드를 확인해주세요.

function curry(fn) {
  return function curried(...args) {
    if (args.length >= fn.length) {
      return fn(...args);
    } else {
      return function(...newArgs) {
        return curried(...args, ...newArgs);
      }
    }
  };
}

위 코드에서 curry 함수는 Currying을 적용할 함수를 인자로 받아 새로운 Curried 함수를 반환합니다. 반환된 curried 함수는 모든 인자가 제공될 때 원래 함수를 호출하고, 그렇지 않은 경우에는 새로운 인자를 받아 다시 curried 함수를 반환하는 방식으로 동작합니다.

이제 예시로 Currying을 사용하여 파라미터를 추출하는 함수를 만들어보겠습니다.

function add(a, b, c) {
  return a + b + c;
}

const curriedAdd = curry(add);
const addWith2 = curriedAdd(2);
const addWith2And3 = addWith2(3);
const result = addWith2And3(4); // 결과: 9

console.log(result);

위 예시에서 add 함수는 총 3개의 파라미터를 받아 덧셈 연산을 수행하는 함수입니다. curry 함수를 사용하여 add 함수를 Curried 함수로 변환한 뒤, Curried 함수를 여러 번 호출하여 파라미터를 하나씩 추출하고 최종적으로 원하는 결과를 얻을 수 있습니다.

Currying은 파라미터가 일부만 제공되는 상황에서 특히 유용합니다. 고차 함수를 작성하거나, 함수형 프로그래밍 패턴을 사용하여 코드를 작성할 때 Currying을 활용하면 코드의 가독성과 재사용성을 크게 향상시킬 수 있습니다.

#Currying #자바스크립트