J'ai du mal à essayer une fonction clojure dans une interface Java. Voici l'exemple:Implémente les méthodes qui retournent le double: discordance
(deftype ClojureDistanceMeasure [^clojure.lang.IFn f]
DistanceMeasure
(compute ^double [this ^doubles a ^doubles b] (double (f a b))))
(defn ->distance-measure
^DistanceMeasure
[^clojure.lang.IFn f]
(ClojureDistanceMeasure. f))
est censé retourner la méthode compute
de DistanceMeasure
(apache mathématiques). Cependant, quel que soit le type d'indice que j'essaie (avant les arguments avec ^, retournez dans une fonction anonyme sous-entendue), le programme refuse de compiler: mismatched return type, expected:double, had : java.lang.Object
.
Est-ce un problème connu? Existe-t-il un moyen de contourner cela (même avec du code Java)?
J'ai même essayé le code stupide, ne fonctionnait pas trop
(deftype ClojureDistanceMeasure [^clojure.lang.IFn f]
DistanceMeasure
(compute [this ^doubles a ^doubles b] (let [result (f a b)] (double (+ result 0.0)))))
Ceci est étrange parce que cela fonctionne pour d'autres interfaces similaires.
Merci