clojure 中的 defrecord
允许使用自定义字段定义简单的数据容器。
例如
user=> (defrecord Book [author title ISBN])
user.Book
结果的最小构造函数仅采用位置参数,没有附加功能,例如默认字段、字段验证等。
user=> (Book. "J.R.R Tolkien" "The Lord of the Rings" 9780618517657)
#:user.Book{:author "J.R.R Tolkien", :title "The Lord of the Rings", :ISBN 9780618517657}
总是可以编写包装默认构造函数的函数以获得更复杂的构造语义 - 使用关键字参数,提供默认值等。
这似乎是宏提供扩展语义的理想场景。人们为更丰富的
defrecord
结构编写和/或推荐了哪些宏?
最佳答案
支持完整和部分记录构造函数以及支持可评估打印和 pprint 表单的示例:
David 是我的一个同事,我们在我们的项目中广泛使用了这个 defrecord2。我认为这样的事情应该真正成为 Clojure 核心的一部分(当然,细节可能会有很大差异)。
我们发现很重要的事情是:
关于macros - 向 Clojure 的 defrecord 构造函数添加功能的推荐宏?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3856704/