昨天,Rich将Clojure的"new"分支带入了master。我们现在正在拥抱deftype和defprotocol之美。当然,我来自Haskell,非常想定义类型,就像在Haskell中那样,它几乎适用于所有没有废弃元组的东西,但是我不认为它在Clojure世界中像那样工作;)。在Clojure的“常见错误”线程中,一个人提到,过度使用结构是他刚开始时犯的一个错误,来自OOP。由于deftypes似乎与structs类似,所以我想知道是否同样的东西适用于struct。
所以,我的问题是:什么时候使用deftype?
最佳答案
性能是deftype
的一个亮点。协议(protocol)方法在deftype上非常快。 deftype也可能具有原始字段,因此在处理数字时不再需要装箱...
另一个 Realm 可能是Java互操作,因为deftype可以实现接口(interface)(并且如果已编译AOT)具有命名的类。
通常,使用协议(protocol)定义抽象并使用deftype实现抽象的基本思想是。
Rich在这里详细说明了他的动机:http://www.assembla.com/wiki/show/clojure/Datatypes