Considérons le code Clojure suivant:Clojure: def Java fonction statique
(defn space? [c] (Character/isWhitespace c))
Il est correct. Mais de toute évidence, cela est juste un autre nom et refactor dans le style inutile:
(def space? Character/isWhitespace)
Mais j'obtiens l'erreur de compilation:
Caused by: java.lang.RuntimeException: Unable to find static field: isWhitespace
in class java.lang.Character
Pourquoi il ne peut pas le trouver? Il fonctionne parfaitement avec les fonctions Clojure:
(def wrap-space? space?) ; Compiles OK!
Que se passe-t-il ici? Pourquoi def
avec la fonction statique de Java ne fonctionne pas?
Si vous voulez vraiment utiliser 'def', vous devez utiliser une fonction anonyme:' (espace def # (Personnage/isWhitespace%)?) '. Ceci est – Alex
@ Alex Notation toujours pas libre de point que j'ai essayé d'atteindre. J'ai considéré cette variante aussi, merci. – demi