6

たとえば、私が持っていた場合:

(defrecord Item [name cost])

どうすれば変換でき["ball" 10]ます{:name "ball", :cost 10}か?

4

1 に答える 1

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

何が起こっているのか簡単に説明します。(->Item "ball" 10)は、指定された引数からレコードを作成するための構文の1つです。と同じ(Item. "ball" 10)です。あなたの場合、あなたは引数のベクトルを持っているので、私たちは(apply fn args-vector)を扱うために使用します。

于 2012-08-31T07:36:27.460 に答える