Develope/Javascript

자바스크립트에서의 커링(Currying)

oper0116 2024. 8. 26. 19:02
반응형

자바스크립트는 함수형 프로그래밍을 지원하는 언어 중 하나이다. 함수형 프로그래밍의 여러 기법 중 하나인 커링(currying)은 자바스크립트 코드의 재사용성과 가독성을 높이는 데 도움을 줄 수 있다. 이번 블로그 글에서는 커링의 기본 개념과 이를 자바스크립트에서 어떻게 활용할 수 있는지 정리하고자 한다.

커링(Currying)이란?

커링은 다수의 인수를 받는 함수를 일련의 함수 호출로 변환하는 기술이다. 보다 구체적으로 말하자면, 커링은 여러 인수를 받는 함수를 단일 인수를 받는 함수의 연속으로 변환하는 과정이며, 이를 통해 부분 적용(partial application)과 같은 강력한 함수형 프로그래밍 패턴을 활용할 수 있다.

커링의 기본 개념

커링의 기본 개념을 이해하기 위해 간단한 예를 살펴보자. 두 수를 더하는 함수 add를 생각해보면, 일반적으로 이 함수는 두 개의 인수를 받게 된다.

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

커링을 적용하면, 이 함수는 먼저 하나의 인수를 받고, 이후에 나머지 인수를 받아 결과를 반환하는 형태로 변환된다. 이 과정은 다음과 같이 구현할 수 있다.

function curriedAdd(a) {
    return function (b) {
        return a + b;
    };
}

여기서 curriedAdda를 받아서 새로운 함수를 반환하고, 이 새로운 함수는 b를 받아서 두 값을 더한 결과를 반환한다.

커링의 장점

  • 부분 적용(Partial Application): 커링을 통해 인수의 일부만 적용하여 나중에 나머지 인수를 제공할 수 있다. 예를 들어, curriedAdd(5)를 호출하면 b를 받아서 5 + b를 계산하는 함수가 반환된다.

  • 재사용성: 커링을 사용하면 동일한 함수로 다양한 인수 조합을 쉽게 처리할 수 있다. 이는 코드의 재사용성을 높여준다.

  • 모듈화: 커링을 통해 함수의 각 부분을 독립적으로 테스트하고 유지보수할 수 있다.

자바스크립트에서 커링 활용하기

커링을 자바스크립트에서 활용하는 방법은 다음과 같다.

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

// 예제: 두 수를 더하는 커링된 함수
const curriedAdd = curry(function(a, b) {
  return a + b;
});

console.log(curriedAdd(1)(2)); // 3
console.log(curriedAdd(5)(10)); // 15

결론

커링은 자바스크립트에서 함수형 프로그래밍의 강력한 기법 중 하나이다. 이를 활용하면 코드의 재사용성과 모듈화를 높일 수 있으며, 복잡한 인수 조합을 쉽게 다룰 수 있다.

커링의 개념을 이해하고 적절히 활용함으로써 더욱 간결하고 유지보수하기 쉬운 코드를 작성할 수 있다.

반응형