我想知道是否有任何 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/