假設我有一個有效調度密鑰的封閉世界;在我的具體例子中,它是nybbles的類型。有兩個明顯的方法來定義有不同的特徵上半字節參數一些參數的操作:使用defmulti
/defmethod
案例或defmulti封閉世界,基於價值的調度?
(defn read-arg [arg-mode mem cursor]
(case arg-mode
0x0 [:imm 0]
0x1 [:imm (read-fwd peek-word8 mem cursor)]
;; And so on
0xf [:ram (read-fwd peek-word32 mem cursor)]))
:
使用
case
,如(defmulti read-arg (fn [arg-mode mem cursor] arg-mode)) (defmethod read-arg 0x0 [_ mem cursor] [:imm 0]) (defmethod read-arg 0x1 [_ mem cursor] [:imm (read-fwd peek-word8 mem cursor)]) ;; And so on (defmethod read-arg 0xf [_ mem cursor] [:ram (read-fwd peek-word32 mem cursor)])
哪一個被認爲是nic呃Clojure的風格?如果調度是在符號而不是nybbles上完成的,答案會不同嗎?