2

以下代码展示了我想在 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)

有没有办法在第二个场景中使用静态方法来实现第一个场景?

4

1 回答 1

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>
于 2012-06-27T17:42:43.523 回答