2013-07-01 2 views
2

에 인수로 매개 변수를 함수에 전달 나는이 매개 변수로 함수의 집합 소요이 기능 :Clojure의

(defn- main-func 
    [fn-list] 
...) 

내가 일반적으로 다음과 같이 호출 :

(main-func [f1 f2 ...]) 

그러나 f1f2을 모두 인수없는 함수입니다. 이 호출에 매개 변수가있는 함수를 포함하려면 어떻게해야합니까? Google을 검색했지만 성공하지 못했습니다. 감사합니다

+2

인수가 포함 된 익명의 함수로 매개 변수로 함수를 래핑 할 수 있습니다. '# (foo 1 2 3 4)'. 'main-func'가 부작용으로'fn-list'를 사용하고 있습니까? –

+0

감사합니다. 내가 그것을 표시 할 수 있도록 답을 쓸 수 있습니까? main-fun은 제공되는 기능의 결과 나 결과에 의존하지 않습니다. 유일한 catch는 main-func의 코드가 실행 된 후에 실행되어야한다는 것입니다. 몇 가지 테스트를했는데 작동하는 것 같습니다. – sebi

+0

물론입니다. 내가 물었던 이유는 인자가없는 순전히 기능적인 함수가 단지 상수라는 것이다. –

답변

4

매개 변수가있는 함수, 예 :.

(defn foo [w x y z] ...) 

은 인수가 포함 된 익명의 함수로 싸여 있습니다.

#(foo 1 2 3 4) 
+0

'(foo partial 1 2 3 4)'가 더 표준 적이라고 생각합니까? Jay Fields는 그가 무슨 말을하는지 잘 알고있는 것 같습니다. http://blog.jayfields.com/2012/10/clojure-avoiding-anonymous-functions.html –

+0

@event_jr 링크를 제공해 주셔서 감사합니다. 흥미로운 내용이지만, 익명으로 모든 사용을 피하는 것이 그의 요점임을 확신하지는 않습니다. 함수 구문. 여기서 익명의 함수는 자연스러운 것처럼 보이지만, 나를 위해서'partial' 옵션은 추가 인수가 있다는 것을 정신적으로 신호합니다. 여기서는 그렇지 않습니다. '(partial foo 1 2 3 4)'는 "no-arg"함수가 아니라 가변 인수 함수라는 것에주의하십시오. –

+0

가변적 인 기능의 실제 결과는 무엇입니까? –

4

외에도 A. 웹이 제안하는 익명 함수에서, 당신은 FN 주어진 기능 partial를 사용할 수 있습니다, 이미 설정된 일부 매개 변수와 다른 FN을 만듭니다. 모든 매개 변수를 지정하면 매개 변수없이 호출 할 수있는 fn이 반환됩니다.

(def plus-12 (partial + 1 2)) 
(plus-12) => 3 
(plus-12 3) => 6