以下代码展示了我想在 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)
有没有办法在第二个场景中使用静态方法来实现第一个场景?
最佳答案
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>
关于clojure 部分文件/createTempFile,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11231958/