【发布时间】:2018-03-22 22:42:05
【问题描述】:
我在尝试将 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 方法应该返回。但是,无论我尝试哪种类型的提示(在 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)))))
这很奇怪,因为它适用于其他类似的界面。
谢谢
【问题讨论】:
标签: clojure type-hinting