f(a,b,c)처럼 단일 호출로 처리하는 함수를 f(a)(b)c)와 같이 각각의 인수가 호출 가능한 프로세스로
호출된 후 병합될 수 있게 변환하는 것
const sum = (x, y) => x + y;
const curridSum = (x) => (y) => x + y;
console.log("sum()", sum(10, 20));//30
//Curried function
console.log("curridSum()", curridSum(10)(20));//30
실습 1(화살표 함수)
const makeFood = (food1) => {
return (food2) => {
return (food3) => {
return `${food1} ${food2} ${food3}`;
};
};
};
const burger = makeFood("Bread")("Ham")("Tomato");
console.log(burger);
//Bread Ham Tomato
//clean code
const cleanmakeFood = (food1) => (food2) => (food3) =>
`${food1} ${food2} ${food3}`;
const cupNoodle = cleanmakeFood("water")("noodle")("Sauce");
console.log(cupNoodle);
//water noodel Sauce
실습 2(함수)
function log(date, importance, message) {
console.log(
`[${date.getHours()}:${date.getMinutes()}]: [${importance}] ${message}`
);
}
log(new Date(), "DEBUG", "some bug");
//[16:34]: [DEBUG] some bug
//curring function
function curry(f) {
return function (a) {
return function (b) {
return function (c) {
return f(a, b, c);
};
};
};
}
const curriedLog = curry(log);
curriedLog(new Date())("DEBUG")("some bug");
///[16:34]: [DEBUG] some bug