자바스크립트에서 Currying을 사용하는 것이 어떤 상황에서 유용한가요?

Currying은 함수의 인자를 하나씩 받아 새로운 함수를 리턴하는 기법입니다. 이를 통해 함수를 조립하고 조합하여 유연하게 코드를 작성할 수 있습니다. 자바스크립트에서 Currying을 사용하는 것은 다양한 상황에서 유용할 수 있습니다.

1. 매개변수를 일부만 적용할 경우

Currying을 사용하면 함수의 매개변수를 일부만 적용하여 부분적으로 실행할 수 있습니다. 예를 들어, 다음과 같은 add 함수가 있다고 가정해봅시다.

function add(a, b, c) {
  return a + b + c;
}

이 함수를 Currying을 사용하여 일부 매개변수를 적용한 새로운 함수를 만들 수 있습니다.

const addFive = add.bind(null, 5);
console.log(addFive(2, 3)); // 10

또는 Currying을 사용하여 간단한 함수를 만들 수도 있습니다.

const multiply = a => b => a * b;
const double = multiply(2);
console.log(double(5)); // 10

2. 재사용성을 높일 경우

Currying을 사용하면 재사용성을 높일 수 있습니다. 예를 들어, 여러 개의 숫자를 더하는 함수를 작성해보겠습니다.

function sum(a, b, c, d) {
  return a + b + c + d;
}

만약 Currying을 사용하지 않는다면, 네 개의 숫자를 더하는 함수를 따로 정의해야 합니다.

function sumFour(a, b, c, d) {
  return a + b + c + d;
}

console.log(sum(1, 2, 3, 4)); // 10
console.log(sumFour(1, 2, 3, 4)); // 10

하지만 Currying을 사용하면 재사용성이 높아집니다.

const curriedSum = a => b => c => d => a + b + c + d;

console.log(curriedSum(1)(2)(3)(4)); // 10

위와 같이 Currying을 사용하면 매번 매개변수를 모두 전달할 필요 없이, 각각 매개변수를 받아 처리하는 함수를 편리하게 작성할 수 있습니다.

Currying은 함수형 프로그래밍에서 자주 사용되는 기법이며, 함수의 조합성과 재사용성을 높여줍니다. 자바스크립트에서 Currying을 사용하여 코드를 작성하면 더욱 유연하고 간결한 코드를 만들 수 있습니다.

#javascript #currying