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

你能设置一个环境让我可以重现这个问题吗?

我会试着解决看看能不能想出什么办法。
...