Currying을 사용하여 자바스크립트에서 함수의 실행 결과를 어떻게 합칠 수 있나요?

자바스크립트에서 함수를 실행하고 그 결과를 합치는 과정은 종종 필요할 수 있습니다. Currying은 이러한 작업을 간단하게 처리할 수 있는 기술입니다. Currying은 함수를 다중 인자로 받는 대신에, 단일 인자를 받는 함수의 연속적인 실행으로 분해하는 것을 말합니다.

Currying의 기본 개념

Currying을 사용하면 함수를 호출할 때 단일 인자를 전달하고, 이어지는 실행에서 인자를 추가로 전달하는 방식으로 함수를 조립할 수 있습니다. 각각의 호출은 이전에 작동한 함수 결과를 사용하여 실행됩니다. 이러한 방식으로 함수를 실행하고 결과를 합치는 것은 매우 유연하고 강력한 도구입니다.

예를 들어, 두 수를 더하는 함수를 Currying을 사용하여 작성해보겠습니다.

const add = (a) => {
    return (b) => {
        return a + b;
    };
};

위의 코드에서 add 함수는 단일 인자 a를 받아서, 이어서 다른 인자 b를 받고, 두 수를 더한 결과를 반환하는 함수입니다. 이 함수를 사용하여 두 개의 수를 더하는 것이 가능해졌습니다.

const sum = add(5)(10);
console.log(sum); // 15

위의 예제에서는 add 함수를 호출하고 반환된 결과에 다시 인자 b를 전달하여 수를 더했습니다. 결과적으로 5와 10을 더한 결과가 출력되었습니다.

Currying을 사용한 함수 결과 합치기

이제 Currying을 사용하여 함수 결과를 어떻게 합칠 수 있는지 살펴보겠습니다. 예를 들어, 두 개의 함수를 실행한 결과를 합치는 함수를 작성해보겠습니다.

const multiply = (a) => {
    return (b) => {
        return a * b;
    };
};

const combineResults = (func1, func2) => {
    return (num) => {
        const result1 = func1(num);
        const result2 = func2(num);
        return result1 + result2;
    };
};

위의 코드에서 multiply 함수는 단일 인자 a를 받아서, 다른 인자 b를 받고 이 두 수를 곱한 결과를 반환하는 함수입니다. combineResults 함수는 두 개의 함수를 인자로 받아 각 함수를 실행한 결과를 합치는 함수입니다.

const multiplyBy3 = multiply(3);
const multiplyBy5 = multiply(5);

const combinedResult = combineResults(multiplyBy3, multiplyBy5);
const finalResult = combinedResult(10);
console.log(finalResult); // 80

위의 예제에서 multiplyBy3multiplyBy5는 각각 multiply 함수를 호출한 결과를 저장한 함수입니다. combineResults 함수를 호출하면서 이 두 개의 함수를 전달하고, 이어서 새로운 인자 10을 전달하여 합치는 동작을 수행합니다. 결과적으로 multiplyBy3multiplyBy5 함수를 실행한 결과를 합친 값을 출력하게 됩니다.

결론

Currying을 사용하여 자바스크립트에서 함수 실행 결과를 합치는 것은 강력하고 유용한 도구입니다. 함수의 연속적인 실행을 통해 결과를 합치는 방식은 코드의 가독성과 유지보수성을 높여줍니다. Currying을 사용하여 함수를 작성하고 결과를 합치는 방법을 익히고, 유연하고 강력한 코드를 작성하는 데 활용해보세요.

#javascript #Currying