커링을 간단히 이야기 하자면, 다른 함수를 반환하는 함수라고 정의 하면 됩니다.
커링은 각 단계에서 하나의 인자를 가지는 함수를 생성하면서, 함수의 인자를 하나씩 하나씩 적용하는 것이다.
예를 들어,
다음과 같은 함수가 있다면
function multiply(a, b){
return a*b;
}
2의 배수 값을 만드는 함수를 만드려고 한다.
function multiplyTwo(a){
return mutiply(a,2)
} // 인자를 2개를 같이 쓴다.
커링을 했을 경우에 아래와 같다.
function multiply(a, b){
return a*b;
}
function multiplyX(x) {
return function (a) {
return multiply(a, x);
}
}
이러면 인자를 하나만 쓸수 있다 !!
const multiplyTwo = multiplyX(2);
const multiplyThree = multiplyX(3);
이럴 때 커링을 이용해 특정 인자를 재사용할 수 있게 만들 수 있다.
ES6 및 최신 버전의 Javascript에서 화살표 함수 구문을 사용하여 Curryed 함수를 쉽게 작성할 수 있습니다.
let greeting = (a) => (b) => a + ' ' + b
greeting('Hello There')('General Kenobi')
//returns Hello There General Kenobi