请分享您的想法,参与2024 年 Clojure 调查问卷!

欢迎!有关如何使用本站的更多信息,请参阅关于 页面。

+1
Clojure

所以我有这样一段代码

(defn- nanos->ms [elapsed-time]
  (double (/ elapsed-time 1000000)))

即使设置了 (set! *warn-on-reflection* true),代码也能正常编译。

但是当我使用 tools.namespace.repl/refresh 时,我收到了反射警告

Reflection warning: file:....metrics.clj:6:3 - call to static method doubleCast on clojure.lang.RT cannot be resolved

我的假设是我在调用内联的 double,并且它没有类型提示。

这个假设正确吗?如果正确,我该如何消除这个反射警告呢?

(defn double
  "Coerce to double"
  {:inline (fn  [x] `(. clojure.lang.RT (doubleCast ~x)))
   :added "1.0"}
  [^Number x] (clojure.lang.RT/doubleCast x))

2 个回答

0
(defn- nanos->ms [elapsed-time]
  (/ elapsed-time 1000000.0))
虽然这解决了眼前的问题,但它并没有解释我所观察到的现象:)
0
by

你可以设置一个环境让我复现一下吗?

by
我会试着做一下,看看我能得到什么结果。
...