Clojure中definterface和defprotocol的区别

16

除了缺乏文档,Clojure中 definterfacedefprotocol 的区别是什么?

2个回答

12
根据《Clojure编程乐趣》:

使用definterface相对于defprotocol的优势仅限于前者允许原始类型作为参数和返回值。将来,由协议生成的接口可能会得到同样的优化,因此请谨慎使用definterface,除非绝对必要,否则请优先选择协议。


5

我可能理解不全,但definterface会生成一个接口类,可以在Java代码中实现该接口以创建适合传递给Clojure函数的类。

协议是一种比多方法更快速、更专注的分派方式。你可以在协议中编写正在运行的代码,并由其他Clojure代码使用。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接