2013-09-06 7 views
3

나는 Lodash를 사용하여 Javascript로보다 기능적인 스타일을 시도하고 작성합니다. 나는 때때로 값을 반환하는 함수가 필요하다는 것을 알아 차렸다. 그래서 Lodash가 실제로이 방법을 가지고 있는지 알아낼 수 있도록 이것이 무엇인지 불리는 것에 대해 궁금해하고있었습니다.값을 취하고 해당 값을 반환하는 함수를 반환하는 함수를 무엇이라고 부릅니까?

var returnFn = function (i) { 
    return function() { 
    return i; 
    }; 
}; 

예 : 대신

_.compose(doSomething, returnFn({ foo: 'bar' }); 

: 그들은 higher order functions라고

_.compose(doSomething, function() { 
    return { foo: 'bar' }; 
}); 
+1

이 방법으로 수행하는 명명법이나 패턴 이름은 무엇입니까? 또는 함수를 호출하여 실행하고 싶습니까? – zsong

+0

Common Lisp에서는 [CONSTANTLY] (http://www.lispworks.com/documentation/HyperSpec/Body/f_cons_1.htm)라고합니다. 나는 그것이 야생에서 그것을 가로 질러 왔다고 생각하지 않는다. –

답변

4

값을 취하고 해당 값을 반환하는 함수를 무엇이라고 부릅니까? 당신은 무엇

하스켈에 const으로 알려진 curryiedidentity function 될 것으로 보인다. 함수를 반환하기 때문에 higher order function이며 함수 factory이라고도합니다. 반환 된 함수 - constant function -은 외부 함수의 인수에 액세스 할 수 있으므로 closure입니다.

그래서 Lodash에 실제로이 방법이 있는지 확인할 수 있습니다.

아니요. 그러나, 당신은 쉽게 _.identity 기능에 _.binding_.partial하여 직접 구성 할 수 있습니다

var returnFn = _.bind(_.partial, null, _.identity); 

귀하의 일반 구현은 빨리 생각을 많이 할 것입니다 ...

_.compose(doSomething, returnFn({ foo: 'bar' })); 

당신이 무슨 일을하는지 이고, 바로 partial application이며, compose으로 사용하면 안됩니다.

_.partial(doSomething, {foo: 'bar'}); 
2

.

관련 문제