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?
다음 기사에서는 이미 정의된 함수를 커링된 함수로 변환하는 것과 관련된 고급 사례를 살펴보겠습니다.
Reference
이 문제에 관하여(JavaScript의 기본 커리 함수), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/anewman15/basic-curry-functions-in-javascript-2pf텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)