Tôi muốn hành động chương trình của tôi khác nhau giữa các kiểu dữ liệu và các lớp wrapper của họ, ví dụ:Cách gửi đa phương thức trên các kiểu nguyên thủy?
(defmulti try-type class)
(defmethod try-type Integer [arg]
(println "Integer"))
(defmethod try-type Integer/TYPE [arg]
(println "int"))
Nhưng nó không hoạt động, mặc dù tôi cố gắng Integer và int cả
user=> (try-type (.intValue (int 2)))
Integer
nil
user=> (try-type (int 2))
Integer
nil
Vì vậy, là nó có thể gửi multimethod trên các loại nguyên thủy?
====== EDIT ======
tôi đã gói một quả ổi google vào clojure. Có một thư viện nguyên thủy trong nó, chẳng hạn như Booleans, Dobules, Ints vv Họ có một số phương pháp chung, vì vậy tôi muốn thử multimethod.
bạn có thể giải thích lý do bạn muốn thực hiện việc này không? hiện đang gửi về nguyên thủy là không thể, nhưng có lẽ là một cách tốt để đạt được cùng một mục tiêu (google "XY Problem") – mikera
@mikera edited! – qiuxiafei