Currying을 사용하여 자바스크립트에서 함수의 인자를 어떻게 변환할 수 있나요?
커링(Currying)은 함수의 인자를 여러개를 받는 대신, 하나의 인자를 받는 함수로 변환하는 기법입니다. 이를 통해 함수를 보다 유연하게 조작하고 재사용할 수 있습니다. 이번 글에서는 JavaScript에서 커링을 사용하여 함수의 인자를 변환하는 방법에 대해 알아보겠습니다.
커링의 개념 이해하기
커링은 함수의 첫 번째 인자를 받고, 나머지 인자를 받는 새로운 함수를 반환하는 과정입니다. 이렇게 반환된 새로운 함수는 나중에 추가적인 인자를 받을 수 있습니다. 이렇게 하나씩 인자를 받아가는 방식을 통해, 함수의 재사용성을 높일 수 있습니다.
예를 들어 아래와 같은 add 함수를 커링을 사용하여 변환해보겠습니다.
function add(a, b, c) {
return a + b + c;
}
커링 함수 작성하기
아래의 curry 함수는 커링을 적용할 함수를 받고, 첫 번째 인자를 받는 새로운 함수를 반환하는 함수입니다.
function curry(fn) {
return function curried(...args) {
if (args.length >= fn.length) {
return fn(...args);
} else {
return function (...moreArgs) {
return curried(...args, ...moreArgs);
}
}
};
}
커링 함수 사용하기
이제 예제에서 작성한 add 함수를 커링 함수를 사용해 변환해보겠습니다.
const curriedAdd = curry(add);
console.log(curriedAdd(1)(2)(3)); // 6
console.log(curriedAdd(1, 2)(3)); // 6
console.log(curriedAdd(1)(2, 3)); // 6
console.log(curriedAdd(1, 2, 3)); // 6
curriedAdd 함수는 첫 번째 인자를 받는 새로운 함수를 반환하고, 해당 함수를 호출하는 과정에서 추가적인 인자를 받을 수 있습니다. 위의 예제에서처럼 curriedAdd 함수에 인자를 하나씩 전달하거나, 한 번에 전달할 수 있습니다. 모든 방식으로 호출하면 동일한 결과를 얻을 수 있습니다.
이렇게 커링을 사용하면 함수의 재사용성을 높여 유연하고 간편하게 인자를 다룰 수 있게 됩니다. 이를 통해 코드의 가독성과 유지보수성을 개선할 수 있습니다.
#javascript #커링