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)))))
这很奇怪,因为它适用于其它类似的接口。
感谢