자바스크립트에서 Currying을 사용하여 함수의 인자를 어떻게 생성할 수 있나요?
Currying은 함수형 프로그래밍에서 사용되는 매우 유용한 개념입니다. Currying을 사용하면 함수를 호출하기 전에 함수의 일부 인자를 이미 지정할 수 있습니다. 이렇게하면 코드의 재사용성이 증가하고 가독성이 향상됩니다.
다음은 자바스크립트에서 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);
}
}
};
}
// 인수를 더하는 함수 생성
function add(a, b) {
return a + b;
}
// Currying된 add 함수 생성
const curriedAdd = curry(add);
// 첫 번째 인수를 미리 지정하여 새로운 함수 생성
const addFive = curriedAdd(5);
// 새로운 함수 호출
const result = addFive(3); // 5 + 3 = 8
console.log(result); // 8
위의 코드에서, curry
함수는 주어진 함수 fn
을 인수로 받아 Currying된 함수를 반환합니다. curried
함수는 매개 변수 args
를 통해 현재까지 전달된 인수를 유지하며, args
의 길이가 원본 함수의 인수 수와 동일하면 해당 함수를 호출하고, 그렇지 않은 경우 새로운 인수를 추가 할 수있는 클로저를 반환합니다.
예제에서는 add
함수를 사용하여 두 숫자를 더하는 역할을 합니다. curry
함수를 사용하여 add
함수의 Currying된 버전 curriedAdd
를 생성합니다. 이후 curriedAdd
함수를 호출하여 첫 번째 인수를 미리 지정한 새로운 함수 addFive
를 생성합니다. 마지막으로, addFive
함수를 호출하여 5와 3을 더한 결과를 얻습니다.
Currying은 함수의 인수를 사용자가 지정할 수 있도록 하여 더욱 유연하고 재사용 가능한 코드를 작성할 수있게 합니다. 함께 사용할 때 매우 강력한 도구입니다.
#JavaScript #Currying