clojure 部分文件/createTempFile

标签 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)

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

最佳答案

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/

相关文章:

java - 对于与 Doseq(和方法代码太大)

clojure - ClojureScript 如何将其命名空间与 Clojure 命名空间区分开来?

java - 具有可变参数的消费者

clojure - 可以监控STM的争用级别吗?

clojure - 什么是 Clojure 内在函数

matrix - core.matrix 中矩阵和向量的元素乘法

ios - 为什么我不能在 Swift 中重新分配实例方法?

f# - 中断函数的返回值

javascript - 无法将函数传递给调用(方法)

functional-programming - Clojure 的惰性如何与对 Java/不纯代码的调用相互作用?