如何基于接口而不是类的存在来调用Clojure多方法?
我知道多方法通常是基于类的调度,但是有没有一种方法可以基于实现的接口进行调度呢 多方法允许您指定自己的分派函数。因此,您可以基于任何谓词进行调度!以下代码基于参数实现的接口进行调度:如何基于接口而不是类的存在来调用Clojure多方法?,clojure,Clojure,我知道多方法通常是基于类的调度,但是有没有一种方法可以基于实现的接口进行调度呢 多方法允许您指定自己的分派函数。因此,您可以基于任何谓词进行调度!以下代码基于参数实现的接口进行调度: (defmulti process-collection (fn [arg1 & _] (cond (instance? java.util.List arg1) :list (instance? java.util.Set arg1) :set :else
(defmulti process-collection
(fn [arg1 & _]
(cond
(instance? java.util.List arg1) :list
(instance? java.util.Set arg1) :set
:else :coll)))
(defmethod process-collection :list
[list-to-process]
())
(defmethod process-collection :set
[set-to-process]
())
(defmethod process-collection :coll
[coll-to-process]
())