我試圖解決Clojure中的反射警告,這似乎是由於缺少對普通Java對象的函數返回值的類型推斷而導致的。在Clojure中鍵入函數的提示
簡單的示例代碼演示了這個問題:
(set! *warn-on-reflection* true)
(defn foo [#^Integer x] (+ 3 x))
(.equals (foo 2) (foo 2))
=> Reflection warning, NO_SOURCE_PATH:10 - call to equals can't be resolved.
true
什麼是解決它的最好方法?這可以通過類型提示來完成嗎?
你使用的是什麼版本的Clojure?我在我的Clojure v1.0中試過你的例子,它似乎很好地工作... – Greg 2010-06-10 21:30:48
這是一個clojure 1.2構建。請注意,警告只顯示(set!* warn-on-reflection * true),這可能是區別....編輯問題以使其更清晰 – mikera 2010-06-10 21:40:18
是的,就是這樣。我現在看到它。 – Greg 2010-06-10 21:42:30