考虑以下Clojure代码:
但是我遇到了编译错误:
这里发生了什么?为什么在Java静态函数中使用
(defn space? [c] (Character/isWhitespace c))
这没关系。但是显然,这只是另一个毫无意义的重命名和重构:
(def space? Character/isWhitespace)
但是我遇到了编译错误:
Caused by: java.lang.RuntimeException: Unable to find static field: isWhitespace
in class java.lang.Character
为什么它找不到呢?使用Clojure函数时它可以完美运行:
(def wrap-space? space?) ; Compiles OK!
这里发生了什么?为什么在Java静态函数中使用
def
不起作用?
def
,那么你必须使用匿名函数:(def space? #(Character/isWhitespace? %))
。 - Alex