multimethod

    0熱度

    2回答

    假設我有這樣的多重方法 (defmulti m (fn [v] [(:type v)])) (defmethod m [Object] [k] (prn "Object")) (defmethod m [:mykwd] [k] (prn "mykwd")) 當我把它與Object子類,它正確地分派給第一個實現: (m {:type String}) "Object" 隨着:myk

    6熱度

    1回答

    我想在Clojure中編寫一個允許評估一系列簡單的「def」表達式的宏。當涉及到宏時,我是一個n00b。這個想法是, (my-defs y1 1 y2 "taco") 應擴大到 (do (def y1 1) (def y2 "taco")) 下面的代碼實現這兩個DEFS (defmacro my-defs [& args] `(do (def ~(f

    5熱度

    3回答

    我有以下的一個名稱空間中說shapes: (derive ::rect ::shape) (derive ::square ::rect) 現在執行的shapes命名空間中的以下內容: (isa? ::square ::shape) 回報true。但是,當我執行命名空間中,我真正實現多方法繪製以下, (isa? ::square ::shape) 返回false。因此,即使我擁有正確

    1熱度

    2回答

    我有一個大量的數據映射序列,每個映射都需要以嵌套的方式進行分類。 即給定項目可以是A或B(如由函數確定),如果它是B,則它可以是C或D(由另一函數確定)等等。在每個階段,更多與分類有關的數據可能被添加到每個地圖。進行分類的功能本身就相當複雜,可能需要引入額外的數據才能做出判斷。 自遞歸multimethod會是一個很好的方法來構建代碼來做到這一點嗎?我會派遣迄今爲止確定的某個項目的最具體類型,或者

    0熱度

    1回答

    他們是什麼,他們之間有什麼不同? 來源很多,像Wikipedia,聲稱他們是同樣的事情,但也有人明確表示,相反,像SBI在this question: 第一:「訪問者模式是一種方法來模擬雙調度在C++中「。這是,呃,不完全正確。實際上,雙派遣是多派遣的一種形式,這是一種在C++中模擬(缺少)多派的方法。

    8熱度

    3回答

    我有專門的兩個參數的多重方法: (defmulti get-tag-type (fn [type tag] [type tag])) 具有類型允許我組不同defmethod調入集: (defmethod get-tag-type [::cat 0] [type tag] ::tiger) (defmethod get-tag-type [::cat 1] [type tag] ::lion)