simkkong

[JavaScript] Currying (커링) 본문

Develop/JavaScript

[JavaScript] Currying (커링)

심꽁 2022. 12. 28. 17:49
728x90

Currying

커링은 function(a, b, c)처럼 단일 호출로 처리하는 함수를, function(a)(b)(c) 와 같이 각각 단일 인수(argument)로 함수를 호출하여 변환하는 것이다.
첫 번째 인자로 새 함수를 반환하고, 두번쨰 인수가 새로운 함수를 또 반환하며.. 반복해서 모든 인자가 완료될 때까지 실행한다.

 

커링은 함수를 더 작은 단위로 쪼갤 수 있으며, 순수함수로 사용이 가능해진다. 이로인해 가독성과 유지보수가 용이해지는 효과가 생긴다.

 

아래와 같이 add 함수를 addCurry 로 커링할 수 있다.

// Noncurried version
const add = (a, b, c) => {
  return a + b + c;
};
console.log(add(2, 3, 5)); // 10

// Curried version
const addCurry = (a) => {
  return (b) => {
    return (c) => {
      return a + b + c;
    };
  };
};
console.log(addCurry(2)(3)(5)); // 10

// es6 Curried version
const addCurry = a => b => c => a + b + c; // 10

 

addCurry(func) 의 반환 값은 function (a) 형태의 래퍼다. addCurry(2)를 실행하면, function (b)가 반환된다.

// 반환된 function (b)
(b) => {
    return (c) => {
      return a + b + c;
    };
  }

마지막 5 인수를 넣고 function (c) 함수를 호출하면, a 와 b, c가 합쳐진 값으로 반환된다.

 

 

 

참고자료

https://ko.javascript.info/currying-partials

 

커링

 

ko.javascript.info

https://xtring-dev.tistory.com/entry/JS-%EB%B2%88%EC%97%ADJavaScript-Currying-%EC%9D%B4%ED%95%B4%ED%95%98%EA%B8%B0%E2%9B%93

 

[JS] (번역)JavaScript Currying 이해하기⛓

🕺 원문 https://blog.logrocket.com/understanding-javascript-currying/ Understanding JavaScript currying - LogRocket Blog Learn what currying is in Javascript, why and where you should use currying, and how to implement it with code examples blog.logroc

xtring-dev.tistory.com

 

Comments