我知道多方法通常是基于类的调度,但是有没有一种方法可以基于实现的接口进行调度呢?
发布于 2011-01-04 19:09:42
Multimethods允许您指定自己的调度函数。因此,您可以基于任何谓词进行调度!下面的代码根据参数实现的接口进行调度:
(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]
())https://stackoverflow.com/questions/4592826
复制相似问题