0
嘗試將clojure函數包裝到Java接口中時遇到問題。 這裏是例如:實現返回double的方法:不匹配
(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))
從DistanceMeasure
的compute
方法(阿帕奇數學)應該返回。然而,無論我嘗試什麼類型的暗示(在使用^之前的args,包裝到暗示的匿名函數之前),progrom拒絕編譯:mismatched return type, expected:double, had : java.lang.Object
。
這是一個已知的問題?有沒有辦法來覆蓋這個(即使使用Java代碼)?
我甚至嘗試愚蠢的代碼,沒有工作過
(deftype ClojureDistanceMeasure [^clojure.lang.IFn f]
DistanceMeasure
(compute [this ^doubles a ^doubles b] (let [result (f a b)] (double (+ result 0.0)))))
這很奇怪,因爲它適用於其它類似的接口。
感謝