如何从地图填充Clojure记录?

and*_*oke 11 record clojure data-structures

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

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

ama*_*loy 20

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

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