2012-08-31 196 views
6

举例来说,如果我有:如何将矢量转换为记录?

(defrecord Item [name cost]) 

我怎么能转换["ball" 10]{:name "ball", :cost 10}

+0

想要将它转换成像{key:value}对格式的Json? –

+0

我认为只要它是一个哈希映射就可以了。我的意思是,这基本上是一个记录,对吗? – inline

回答

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)来处理。

+0

如果您可以扩展 - > Item功能来自 –

+0

Alexey,您一直在教我Clojure!再次感谢你)。你能快速告诉我叫什么' - >',这样我可以进一步研究它的含义吗? – inline

+1

新增了对正在发生的事情的简短说明。 –