gpt4 book ai didi

clojure - deftype 与 defrecord

转载 作者:行者123 更新时间:2023-12-03 08:56:31 28 4
gpt4 key购买 nike

defrecord是 Clojure 中定义“实体”的首选形式 - 对于一般情况 - 在 ClojureScript 中可以找到对 deftype 的更多引用。 ,反射(reflect)在 various documentation .

两种形式有什么区别?应该更喜欢哪一个?

最佳答案

deftype创建一个实现协议(protocol)的基本对象。
defrecord创建一个实现协议(protocol)的不可变持久映射。

使用哪个取决于您想要什么。你想要一个完整的 ClojureScript 数据结构吗?然后使用记录。你只是想要一个除了满足协议(protocol)之外什么都不做的简单的东西吗?然后使用类型。

您引用的这两个文档使用类型,因为它们试图在最基本的级别上说明协议(protocol),并且可以说类型比记录更少“进行”。

但是,在 Clojure/ClojureScript 中,大多数实际使用的类对象事物都需要将数据字段与对象一起存储,因此您应该强调使用记录,出于同样的原因,您应该使用 Clojure 的任何不可变集合。

关于clojure - deftype 与 defrecord,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13150568/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com