Tôi đang cố gắng giải quyết một cảnh báo phản chiếu trong Clojure có vẻ là do thiếu suy luận kiểu về các giá trị trả về hàm là các đối tượng Java bình thường.Loại gợi ý cho các hàm trong Clojure
dụ Trivial mã đó chứng tỏ vấn đề:
(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
cách tốt nhất để giải quyết việc này là gì? Điều này có thể được thực hiện với các gợi ý loại?
Bạn đang sử dụng phiên bản Clojure nào? Tôi đã thử ví dụ của bạn trong Clojure v1.0 của tôi và có vẻ như nó hoạt động tốt ... – Greg
Đó là một bản dựng hình lục giác 1,2. Lưu ý rằng cảnh báo chỉ hiển thị với (set! * Warn-on-reflection * true) có thể là sự khác biệt .... đã chỉnh sửa câu hỏi để làm rõ hơn – mikera
Vâng, đúng vậy. Tôi thấy nó bây giờ. – Greg