考虑以下 Clojure 代码:
(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!
这里会发生什么?为什么def
使用 Java 静态函数不起作用?