虽然在一般情况下,defrecord是定义“实体”的首选形式,但在ClojureScript中可以找到更多对deftype的引用,如various documentation所反映的那样。
这两种形式之间的区别是什么?你应该选择哪一个?
发布于 2012-11-01 04:40:03
deftype创建了一个实现协议的基本对象。
defrecord创建了一个不可变的持久映射,它实现了一个协议。
使用哪一个取决于你想要什么。你想要一个完整的ClojureScript数据结构吗?然后使用记录。您是否只想要一个除了满足协议之外什么也不做的基本功能?然后使用一个类型。
您引用的两个文档使用类型,因为它们试图在最基本的级别说明协议,可以说,类型比记录更少。
但是,大多数在Clojure/ClojureScript中使用类似对象的东西都需要将数据字段与对象一起存储,因此您应该着重使用记录,原因与您应该使用任何Clojure的不可变集合的原因相同。
发布于 2019-02-02 05:03:53
https://stackoverflow.com/questions/13150568
复制相似问题