Ich versuche, eine Reflektionswarnung in Clojure aufzulösen, die aus dem Fehlen von Typrückschluss auf Funktionsrückgabewerte zu resultieren scheint, die normale Java-Objekte sind.Geben Sie Hinweise für Funktionen in Clojure ein
Trivial Beispiel-Code, der das Problem demonstriert:
(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
Was ist der beste Weg, dies zu lösen? Kann dies mit Typhinweisen geschehen?
Welche Version von Clojure verwenden Sie? Ich habe dein Beispiel in meinem Clojure v1.0 versucht und es scheint gut zu funktionieren ... – Greg
Es ist ein Clojure 1.2 Build. Beachten Sie, dass die Warnung nur angezeigt wird mit (set! * Warn-on-reflection * true) was der Unterschied sein kann .... die Frage bearbeitet, um klarer zu werden – mikera
Ja, das war es. Ich sehe es jetzt. – Greg