2017-11-20 8 views
0

몇 초 전부터이 코드 스 니펫을 currying 기사에서 발견했지만 제작자는 어떻게 작동하는지 설명하지 않았습니다. fn 및 args1 변수의 출처를 이해하지만, args2가 프로세스 전반에 걸쳐 포함될 것이라는 것을 이해하는 데 어려움을 겪고 있으며 누구도 통찰력을 제공 할 수 있는지 궁금해하고 있습니까?currying and rest and spread operators

function curry(fn, ...args1) { 
    return (...args2) => { fn(...args1, ...args2); } 
} 
+0

[currying] (https://en.wikipedia.org/wiki/Currying#Contrast_with_partial_function_application)입니다. 부분 적용! – Bergi

+0

아무 것도 설명하지 않으면 기사의 요점은 무엇입니까? 또한 링크 해 주시겠습니까? – Bergi

+0

@Bergi 요점은 그것이 currying 함수를 만드는 것이라고 생각합니까? 어쩌면 카레에 대한 나의 정의가 정확하지 않을 수도 있습니다. – zfrisch

답변

0

curry은 함수를 반환합니다. 반환 된 함수가 호출되면 자체 인수가 전달 될 수 있습니다. 그것들은 args2에 의해 참조됩니다. 당신이 볼 수있는 fn이 (myFunc에 대한 참조 인) 호출 될 때 1 2 3 4 5 6를 표시하므로

function curry(fn, ...args1) { 
 
    console.log("args1 = ", ...args1); 
 
    return (...args2) => { 
 
     console.log("args2 = ", ...args2); 
 
     fn(...args1, ...args2); 
 
    } 
 
} 
 

 
function myFunc(...allArgs) { 
 
    console.log(...allArgs); 
 
} 
 

 
const curried = curry(myFunc, 1,2,3); 
 

 
curried(4,5,6);

그래서, 그것은 모든 args1args2를받습니다.

+0

멋지게 정리하는 것이 있습니다! – user3253156

+0

굉장합니다. 그것이 도움이 되었기 때문에 다행. –