实现 returns double 的方法:不匹配
Implement methods which returns double : mismatch
我在尝试将 clojure 函数包装到 Java 接口时遇到了问题。
这是示例:
(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
(apache 数学)中的 compute
方法应该是 return。但是,无论我尝试哪种类型的提示(在带有 ^ 的 args 之前,包装成一个提示的匿名函数),程序都拒绝编译: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)))))
这很奇怪,因为它适用于其他类似的界面。
谢谢
这解决了问题:
(deftype ClojureDistanceMeasure [^clojure.lang.IFn f]
DistanceMeasure
(compute ^double [this a b] (f ^doubles a ^doubles b)))
同样没有内部类型提示:我必须删除参数提示并且它有效。不知道是不是clojure遗漏了部分issue tough
我在尝试将 clojure 函数包装到 Java 接口时遇到了问题。 这是示例:
(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
(apache 数学)中的 compute
方法应该是 return。但是,无论我尝试哪种类型的提示(在带有 ^ 的 args 之前,包装成一个提示的匿名函数),程序都拒绝编译: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)))))
这很奇怪,因为它适用于其他类似的界面。
谢谢
这解决了问题:
(deftype ClojureDistanceMeasure [^clojure.lang.IFn f]
DistanceMeasure
(compute ^double [this a b] (f ^doubles a ^doubles b)))
同样没有内部类型提示:我必须删除参数提示并且它有效。不知道是不是clojure遗漏了部分issue tough