자바스크립트에서 Currying을 사용하여 함수의 결과를 어떻게 형 변환할 수 있나요?

먼저, Currying을 구현하기 위해 curry라는 함수를 작성해야 합니다. 이 함수는 다음과 같이 구현할 수 있습니다:

const curry = (fn) => {
  return function curried(...args) {
    if (args.length >= fn.length) {
      return fn.apply(this, args);
    } else {
      return function (...nextArgs) {
        return curried.apply(this, args.concat(nextArgs));
      };
    }
  };
};

위의 코드에서 curry 함수는 인자로 받은 fn 함수를 형 변환하여 새로운 함수를 반환합니다. 반환된 함수는 필요한 모든 인수가 제공될 때까지 인자를 쌓아 올리는 방식으로 작동합니다. 인수가 모두 제공되면 fn 함수를 호출하고 그 결과를 반환합니다. 그렇지 않으면 다음 인수를 받아와 새로운 함수를 반환합니다.

이제 curry 함수를 사용하여 결과를 형 변환하는 예제를 살펴보겠습니다. 예를 들어, 두 개의 숫자를 더하는 함수를 작성하고 Currying을 사용하여 결과를 문자열로 형 변환하고 싶다고 가정해봅시다:

const add = (a, b) => a + b;
const curriedAdd = curry(add);

const result = curriedAdd(5)(10).toString();
console.log(result); // "15"

위의 코드에서 add 함수는 두 개의 숫자를 더하는 함수입니다. curriedAddadd 함수의 Currying된 버전입니다. 인수를 부분적으로 전달하여 curriedAdd 함수를 호출할 수 있습니다. 마지막으로, 결과를 문자열로 변환하기 위해 toString 메서드를 호출합니다.

즉, Currying을 사용하여 함수의 결과를 원하는 형태로 변환할 수 있습니다. 이를 통해 코드의 유연성과 가독성을 향상시킬 수 있습니다.

#currying #javascript