似乎两者都可用于定义稍后可以使用不同数据类型实现的函数. AFAIK的主要区别在于defmulti适用于地图,defprotocol适用于记录. 还有什么其他差异?使用一个而不是另一个有什么好处? 简短
还有什么其他差异?使用一个而不是另一个有什么好处?
简短版本:defmulti更加灵活和通用,而defprotocol表现更好.版本略长:
defprotocol支持类型调度,这类似于大多数主流编程语言中的多态.
defmulti是一种更通用的机制,您可以在其中发送除了单一类型之外的其他内容.这种灵活性会带来性能损失.
More on protocols
More on multimethods