curry 이해하기
curry
curry 함수에서 주의할 점은 함수를 리턴하고
처음 리턴한 함수에 대한 인자 값을 나중에 받아 넣어줄 수 있다는 개념이다.
const curry = f => (a, ..._) => _.length ? f(a, ..._) : (..._) => f(a, ..._);
curry 함수는 함수를 받는다,
그리고 함수를 리턴하는데 그 함수는 두 개의 인자를 받는다 = (a, ..._)
이 두 인자는 f 함수의 인자로 사용된다.
지금까지의 상황은 curry 함수는 A 함수를 인자로 받고
A 함수의 인자를 받을 함수 B를 리턴한다 (a, ..._) => ...
이 때 삼항연산자가 리턴값이 되어 첫 인자를 제외한 나머지 인자들의 길이 ... = (배열로 치환되므로)의 길이가 존재한다면 f(a, ...)를 실행하여 입력받은 함수의 인자로 전부 넣어준다.
아닐 경우 (...)=>f(a, ...) 함수를 리턴하여 ..._ 인자를 받을 함수를 리턴하여 결과적으로 f에 들어갈 함수의 인자를 모두 받아내게 된다.
사용은 이런식으로 하게 된다.
const curry = f => (a, ..._) => _.length ? f(a, ..._) : (..._) => f(a, ..._);
const multi = (a, b) => a * b;
const curryMulti = curry(multi);
console.log(curryMulti); // (a, ..._) => _.length ? f(a, ..._) : (..._) => f(a, ..._)
console.log(curryMulti(1)); // (..._) => f(a, ..._)
console.log(curryMulti(1)(4)); // 4
중요한 점은 curry는 함수를 받고 함수의 인자들을 받아줄 함수를 다시 리턴한다는 것이다.
Author And Source
이 문제에 관하여(curry 이해하기), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@zerozoo-front/curry-이해하기저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)