虽然defrecord
是Clojure中用于定义“实体”的一般情况的首选形式,但在ClojureScript中可以找到更多对deftype
的引用,如{{3}中所示。 } various。
两种表格有什么区别?哪个人更喜欢?
答案 0 :(得分:44)
deftype
创建了一个实现协议的简单对象。
defrecord
创建一个实现协议的不可变持久映射。
使用哪个取决于你想要什么。您想要一个完整的ClojureScript数据结构吗?然后使用记录。你只是想要一个除了满足协议之外什么都不做的简单的事情吗?然后使用类型。
您引用的两个文档使用类型,因为它们试图在最基本的级别上说明协议,而且类型比记录更少“继续”,可以这么说。
然而,Clojure / ClojureScript中对象类事物的大多数现实使用需要将数据字段与对象一起存储,为此您应该着重使用记录,出于同样的原因,您应该使用任何Clojure的不可变的集合。
答案 1 :(得分:0)