안녕하세요. 송기석입니다.

 

하루 24시간. 누구나 같은 시간을 가지고 있지만 쓰는 용도는 모두 다릅니다. 우리는 어떻게 시간을 쓰고 있습니까?

 

커링

 

자바스크립트에서는 기본적으로 커링 메소드를 제공하지 않기 때문에 function prototype curry 모듈를 만들었습니다.


   Function.prototype.curry = function() {

          var slice = Array.prototype.slice;

          var args = slice.apply(arguments);

          var that = this;

          return function() {

                        return that.apply(null, args.concat(slice.apply(arguments)));

          };

}

 

커링을 알아 보기 위해 다음과 같은 함수를 만들어 테스트 합니다.


var sum = function(a, b) {

          return a+b;

}

 

var sum_curry1 = sum.curry(1);

console.log(sum_curry1(5));                       //  6

console.log(sum_curry1(3));                       //  4

 

감이 오십니까? 그럼 하나 .


var sum_curry2 = sum.curry(2);

console.log(sum_curry2(5));                       //  7

console.log(sum_curry2(3));                       //  5

 

원래 sum 함수는 값을 2개를 받아서 더하는 목적을 가지고 있습니다. 하지만 커링으로 만든 함수는 입력 값이 1개입니다. 보기 쉽게 설명하면 다음과 같다고 생각하면 됩니다.

 

// var sum_curry1 = sum.curry(1);

sum_curry1(5) = sum(1, 5)

sum_curry1(5) = sum(1, 5)

 

// var sum_curry2 = sum.curry(2);

sum_curry2(5) = sum(2, 5)

sum_curry2(5) = sum(2, 5)

 

커링은 인수를 함수와 결합하여 다른 함수를 만들도록 합니다.