如何将矢量转换为记录?

时间:2012-08-31 07:30:13

标签: clojure

例如,如果我有:

(defrecord Item [name cost])

如何将["ball" 10]转换为{:name "ball", :cost 10}

1 个答案:

答案 0 :(得分:15)

user=> (defrecord Item [name cost])
user=> (apply ->Item ["ball" 10])
#user.Item{:name "ball", :cost 10}

简要说明发生了什么。 (->Item "ball" 10)是从给定参数创建记录的语法之一。它与(Item. "ball" 10)相同。在你的情况下,你有参数的向量,所以我们使用(apply fn args-vector)来处理。