clojure partial File / createTempFile

时间:2012-06-27 17:36:54

标签: clojure functional-programming

以下代码展示了我想在java静态方法上复制的语义

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

一两个

但是,在静态方法上进行求值时,会抛出以下异常。

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

CompilerException java.lang.RuntimeException:无法在类java.io.File中找到静态字段:createTempFile,编译:(NO_SOURCE_PATH:50)

有没有办法在第二种情况下使用静态方法实现第一种情况?

1 个答案:

答案 0 :(得分:5)

apply需要一个clojure函数(实现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>