2012-06-27 3 views
2

다음 코드는 I가Clojure의 부분 파일/createTempFile

((partial apply (fn [x y] (print x y \newline))) ["one" "two"]) 

한 두

그러나 정적 자바 방법에 복제하려는 의미를 나타낸다 정적 메서드를 사용하면 다음 예외가 발생합니다.

가 있는가 사용하여 첫 번째 시나리오를 달성 할 수있는 방법을 클래스 java.io.File에있는 createTempFile, 컴파일 : : : (50 NO_SOURCE_PATH)

((partial apply File/createTempFile) ["hello" ".txt"]) 

CompilerException java.lang.RuntimeException가 : 정적 필드를 찾을 수 없습니다 두 번째 시나리오의 정적 메서드?

답변

5

apply는 익명 함수에서 정적 메서드 호출을 래핑해야하므로 apply (iFn을 구현하는) 함수가 필요합니다.

user> ((partial apply #(java.io.File/createTempFile %1 %2) ["hello" ".txt"])) 
#<File /tmp/hello8601033663867010647.txt> 

또는 부분없이

: 깨달음에 대한

user> (apply #(java.io.File/createTempFile %1 %2) ["hello" ".txt"]) 
#<File /tmp/hello2555220024359994482.txt> 
+0

많은 감사합니다. 매력처럼 작동합니다. – gjcourt