首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >deftype与defrecord

deftype与defrecord
EN

Stack Overflow用户
提问于 2012-10-31 10:46:54
回答 2查看 6.5K关注 0票数 34

虽然在一般情况下,defrecord是定义“实体”的首选形式,但在ClojureScript中可以找到更多对deftype的引用,如various documentation所反映的那样。

这两种形式之间的区别是什么?你应该选择哪一个?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-11-01 04:40:03

deftype创建了一个实现协议的基本对象。

defrecord创建了一个不可变的持久映射,它实现了一个协议。

使用哪一个取决于你想要什么。你想要一个完整的ClojureScript数据结构吗?然后使用记录。您是否只想要一个除了满足协议之外什么也不做的基本功能?然后使用一个类型。

您引用的两个文档使用类型,因为它们试图在最基本的级别说明协议,可以说,类型比记录更少。

但是,大多数在Clojure/ClojureScript中使用类似对象的东西都需要将数据字段与对象一起存储,因此您应该着重使用记录,原因与您应该使用任何Clojure的不可变集合的原因相同。

票数 49
EN

Stack Overflow用户

发布于 2019-02-02 05:03:53

根据DEFTYPE VS DEFRECORD的说法,您应该区分编程构造和域构造。

deftype用于编程构造,defrecord用于需要自定义类型的域构造。

希望这能有所帮助。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13150568

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档