请在 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 投票

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

我会尝试解决这个问题,看看能得出什么。
...