Ale*_*ard 12 macros constructor record clojure
defrecord 在clojure中允许使用自定义字段定义简单数据容器.
例如
user=> (defrecord Book [author title ISBN])
user.Book
Run Code Online (Sandbox Code Playgroud)
结果的最小构造函数只接受位置参数而没有其他功能,例如字段默认,字段验证等.
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}
Run Code Online (Sandbox Code Playgroud)
编写包含默认构造函数的函数总是可以获得更复杂的构造语义 - 使用关键字参数,提供默认值等等.
这似乎是宏提供扩展语义的理想方案.人们为了更丰富的defrecord建设而编写和/或推荐了哪些宏?
支持完整和部分记录构造函数以及支持可评估打印和pprint表单的示例:
大卫是我的同事,我们在我们的项目中广泛使用这个defrecord2.我认为这样的事情应该是Clojure核心的一部分(当然细节可能会有很大不同).
我们发现重要的事情是: