java - 所有的 clojure 代码都在 java 代理中工作吗?

标签 java clojure

我想知道是否有任何 clojure 代码或宏在嵌入到 java 代码的 clojure 代理中时不起作用,例如:

(proxy [Some Java Interface] []
  (some Java Method [args]
  ...
  Clojure code
  ...
  )
)

或者,我能否仅在代理中嵌入对 Java 函数的调用?

最佳答案

任何 Clojure 代码都应该在 proxy 中运行。

在幕后,Clojure 函数无论如何都被编译成 Java 对象,调用 Clojure 函数在技术上就是调用 Java 方法本身。宏扩展仍然可以正常使用 proxy。阅读器宏都可以正常工作等。

user> (defmacro foo [] "FOO")
#'user/foo

user> (.toString (proxy [Object] [] 
                   (toString [] 
                     (str (foo) \space (reduce + (range 5))))))
"FOO 10"

关于java - 所有的 clojure 代码都在 java 代理中工作吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4434067/

相关文章:

java - 使用回车键在java中激活一个按钮

java - JPA 在通过可执行 jar 运行时不起作用,但在 eclipse 中起作用

java - 计算两个小时的字符串之间的差异

java - Maven 中的混合 Clojure 和 Java 项目

methods - 您可以在 clojure defrecord 中指定方法的返回类型吗?

clojure - 在 Clojure 中将已排序的映射保存+读取到文件

java 字段限定符最佳实践

java - 访问限制 : The type 'BASE64Decoder' is not API

caching - clojure 向量缓存

clojure - 具有多个参数的复合路由