반응형

커링은 하나 이상의 매개변수를 가진 함수를 단일 인수를 갖는 함수들의 함수열로 바꾸는 기법을 말한다.

이 커링 기법을 사용하면, 인자들을 지금 현재 다 받지 않아도 함수 형태로 계속 전달할 수 있고, 인자들을 쪼갤 수 있어 공통 인자가 있는 함수들을 그 인자를 생략한 채 사용할 수 있다는 장점이 있다.

 

common => func1(a, common);

common => func2(b, common);

common => func3(c, common);

 

이렇게 세 함수가 같은 인자를 받아 실행하는 함수라면 커링을 통해 common 을 생략하고 바로 부를 수 있다.

 

func1(a);

func2(b);

func3(c);

 

이외에도 인자의 갯수가 줄어 unit test 가 편리하고 가독성이 높아진다는 장점이 있다.

 

커링 함수를 자바스크립트 버전으로 표현하면 다음과 같다.

 

const curry = func => function curried(...args) {
    if (args.length >= func.length) return func.apply(this, args);
    return (...args2) => curried.apply(this, args.concat(args2));
};

 

간단하다.

원래 함수의 인자가 모두 들어오기 전까지는 지금까지의 인자들을 더해 Wrapper 함수로 전달 후 Wrapper 함수를 리턴하고 모든 인자가 들어오면 원래 함수를 호출한다.

반응형

'언어 > Javascript' 카테고리의 다른 글

[JS] 일급함수  (0) 2023.02.10
[JS] 비동기 클린 코드과 에러 핸들링  (0) 2023.02.02

+ Recent posts