当前位置 : 主页 > 大数据 > 区块链 >

clojure – defmulti vs defprotocol?

来源:互联网 收集:自由互联 发布时间:2021-06-22
似乎两者都可用于定义稍后可以使用不同数据类型实现的函数. AFAIK的主要区别在于defmulti适用于地图,defprotocol适用于记录. 还有什么其他差异?使用一个而不是另一个有什么好处? 简短
似乎两者都可用于定义稍后可以使用不同数据类型实现的函数. AFAIK的主要区别在于defmulti适用于地图,defprotocol适用于记录.

还有什么其他差异?使用一个而不是另一个有什么好处?

简短版本:defmulti更加灵活和通用,而defprotocol表现更好.

版本略长:

defprotocol支持类型调度,这类似于大多数主流编程语言中的多态.

defmulti是一种更通用的机制,您可以在其中发送除了单一类型之外的其他内容.这种灵活性会带来性能损失.

More on protocols

More on multimethods

网友评论