如何从地图填充Clojure记录?

时间:2012-05-25 18:01:16

标签: data-structures clojure record

记录中是否有类似struct-map的内容?如果没有,我应该使用结构(文档不鼓励使用结构)?

也许我完全做错了什么?我有一个相当复杂的功能,目前需要一个选项图。我试图澄清哪些选项值是可接受/使用的(通过用记录替换它)。现在我想将它连接到在地图中包含此信息的代码(并且其中包含记录中数据的超集)。

1 个答案:

答案 0 :(得分:20)

不建议仅将记录用于“文档” - 普通的旧地图更灵活,更简单,更容易。对于文档,您只需添加文档字符串或注释,或创建类似(defn make-whatever [thing1 thing2])的函数。

如果您仍想要记录,则根据您是否使用clojure 1.3或更高版本,您有几个选择。如果是这样,(defrecord Whatever ...)还定义了map->Whatever函数和一个采用位置参数的->Whatever函数。如果没有,您可以编写(into (Whatever. nil nil nil) some-map)(为记录类型传递正确数量的nils)。