What is currying?
간단히 말하면?
함수를 반환하는 함수
func 예제
function multiply(a, b){ return a*b; } function multiplyTwo(a){ return a*2; } function multiplyX(x){ return function(a){ return multiply(a,x); } }
|
Arrow func 예제 1
const multiply = (a, b) => a * b; const multiplyTwo = (a) => multiply(a, 2); const multiplyX = x => a => multiply(a, x);
const multiplyThree = multiplyX(3); const multiplyFour = multiplyX(4);
const result1 = multiplyThree(3); const result2 = multiplyFour(3);
const result3 = multiplyX(3)(3); const result4 = multiplyX(4)(3);
|
Arrow func 예제 2
const equation = (a, b, c) => x => ((x * a) * b) + c; const formula = equation(2, 3, 4); const x = 10; const result = formula(x);
|
위에 예시에서 equation()
처럼 인자를 나중에 받아 실행할 함수를 생성해주는 함수를
커링 함수
라고 해요.
응용 예제
const multiply = (a, b) => a*b; const add = (a, b) => a+b;
const multiplyX = x => a => multiply(a, 2); const addX = x => a => add(x, a);
const addFour = addX(4); const multiplyTwo = multiplyX(2); const multiplyThree = multiplyX(3); const formula = x => addFour(multiplyThree(multiplyTwo(x)));
|
함수의 인자를 다시 구성하여 필요한 함수를 만드는 패턴
함수 조합 기법