자바스크립트에서 Currying을 사용하여 함수의 인자를 어떻게 병합할 수 있나요?

Currying은 함수를 부분적으로 호출하는 기술로, 복잡한 함수를 간단한 함수들로 나누고 각 함수를 순차적으로 호출하여 결과를 얻는 방법입니다. 이를 통해 매개변수의 병합이 가능합니다.

// 첫 번째 함수 정의
function add(a) {
  return function(b) {
    return a + b;
  }
}

// 두 번째 함수 정의
function multiply(a) {
  return function(b) {
    return a * b;
  }
}

// Currying된 함수 사용
const addFive = add(5);
const multiplyByTwo = multiply(2);

const result = multiplyByTwo(addFive(3));
console.log(result); // 16

위 예제에서 add 함수와 multiply 함수는 각각 한 개의 인자를 받아 새로운 함수를 반환합니다. 이렇게 반환된 함수들을 Currying하여 인자를 계속해서 병합시킬 수 있습니다.

먼저 addFive라는 새로운 함수를 add(5)로 정의합니다. 이 함수는 5와 인자를 더하는 기능을 수행합니다. 다음으로 multiplyByTwo라는 새로운 함수를 multiply(2)로 정의합니다. 이 함수는 인자와 2를 곱하는 기능을 수행합니다.

마지막으로 multiplyByTwo 함수에서 addFive(3)를 호출하여 인자를 병합합니다. addFive 함수는 첫 번째 호출때 받은 5와 3을 더하여 8을 반환하고, multiplyByTwo 함수는 8과 2를 곱하여 최종 결과인 16을 반환합니다.

이처럼 Currying은 함수의 인자를 병합하여 조합 가능한 함수들을 생성하는 효율적인 방법입니다. 함수를 단순하게 유지하면서도 유연하고 다양한 연산을 수행할 수 있습니다.

#javascript #currying