2012-08-31 21 views
6

Na przykład, gdybym miał:Jak mogę przekonwertować wektor na rekord?

(defrecord Item [name cost]) 

Jak mogę przekonwertować ["ball" 10] do {:name "ball", :cost 10}?

+0

chcesz przekonwertować go na format Json jak w formacie {key: value}? –

+0

Myślę, że tak długo, jak to jest mapa skrótów, będzie dobrze. Chodzi mi o to, co to właściwie jest płyta, prawda? – inline

Odpowiedz

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

Krótkie wyjaśnienie tego, co się dzieje. (->Item "ball" 10) jest jedną ze składni do tworzenia rekordów z podanych argumentów. Jest taki sam jak (Item. "ball" 10). W twoim przypadku masz wektor argumentów, więc używamy (apply fn args-vector), żeby sobie z tym poradzić.

+0

Kudo, jeśli mógłbyś rozwinąć tam, gdzie funkcja -> Item pochodzi od –

+0

Alexey, uczyłeś mnie Clojure przez cały dzień! Jeszcze raz dziękuję). Czy możesz szybko powiedzieć mi, jak nazywa się '->', więc mogę zbadać, co to znaczy dalej? – inline

+1

Dodano krótkie wyjaśnienie tego, co się dzieje. –

Powiązane problemy