JavaScript의 기본 커리 함수

이 게시물에서는 기본 커리 함수의 예와 함께 JavaScript를 사용한 커리 함수에 대해 알아봅니다.

이라는 이전 게시물에서 arity, unary 및 curried 함수가 무엇이며 어떻게 관련되어 있는지에 대해 논의했습니다. 이 문서와 향후 문서에서 이러한 개념을 사용할 것입니다.

기본 예



아래 예에서는 일련의 중첩된 단항 함수를 반환하는 단항 함수createMessage()를 정의합니다.

function createMessage(greeting) {
  return function(name) {
    return function(message) {
      return `${greeting}, ${name}! ${message}`;
    };
  };
};


외부 함수는 하나의 인수를 사용하고 첫 번째 중첩 함수를 반환합니다. 이 함수는 인수와 함께 호출될 때 중첩 함수를 반환합니다.

관심 있는 반환 값은 다중 인수 함수로 달성할 수 있는 최종 반환 문에 있습니다.

function createMessage(greeting, name, message) {
  return `${greeting}, ${name}! ${message}`;
}


Currying은 그것을 일련의 반환된 단항 함수로 만들었습니다. 이제 한 번에 하나의 인수로 순차적으로 createMessage()를 호출할 수 있습니다.

console.log(createMessage('Hi')('Haskell')(`What's up?`));
// Hi, Haskell! What's up?


부분



커리 함수는 부분 함수를 생성하는 것을 매우 편리하게 만듭니다:

const greet = createMessage('Hello');
const goodMorning = createMessage('Good Morning');

const greetHaskell = greet('Haskell');
const greetAbdullah = greet('Abdullah');
const wishHaskell = goodMorning('Haskell');


아직은 최종 반환 문을 반환하지 않는다는 점에 유의하십시오.

console.log(greet);
/*
Returns
f (name) {
  return function(message) {
    return `${greeting}, ${name}! ${message}`;
  };
 }
*/

console.log(greetHaskell);
/*
Returns 
f (message) {
    return `${greeting}, ${name}! ${message}`;
  }
*/


모든 인수를 제공할 때까지 반환된 각 함수를 하나씩 순차적으로 호출해야 합니다.

const askHaskell = greetHaskell('Where are you now?');
console.log(askHaskell);
// Hello, Haskell! Where are you now?


화살표 기능이 있는 카레



화살표 함수를 사용하면 커리 함수를 매우 쉽게 작성할 수 있습니다. 위의 함수는 한 줄로 작성할 수 있습니다.

const createMessage = greet => name => message => `${greet}, ${name}! ${message}`;

const messageHaskell = createMessage('Hi')('Haskell')('How are you?');
console.log(messageHaskell); // Hi, Haskell! How are you?


다음 기사에서는 이미 정의된 함수를 커링된 함수로 변환하는 것과 관련된 고급 사례를 살펴보겠습니다.

좋은 웹페이지 즐겨찾기