如何为单个数据类型创建多方法的多个实现?是否可以为同一类型提供多种不同的多方法实现?
这可能不是一个很好的例子,但我希望它描述了一个思路:能治疗嵌套向量既是序列:
repl> (def thing [[[1] []] [27] [18 [32 35]]])
repl> (fmap count thing)
[2 1 2]
和树木:
repl> (fmap (partial + 1) thing)
[[[2] []] [28] [19 [33 36]]]
是什么为相同类型创建和使用多个multimethod实现的一般方法?
我不认为单独使用multimethods会有很大的帮助 - “defmethod”会替换之前为该分派值定义的任何方法。 – Alex
如果函数做了两件完全不同的事情,为什么不声明两个不同的函数/多方法呢? – DaoWen
多方法在任何事物上都是多态的,而不仅仅是类型上(尽管这是最常见的)。所以,如果你有某种方法来区分你想要用一种方法处理的相同类型的实体和你想处理另一种类型的实体,那么这很好。 –