2013-08-29 14 views
5

Mam wektor, który wygląda tak:budowy mapy z wektora w Clojure

["Config" "{}" "Auth" "{}" "Other" "{}"] 

Chciałbym podjąć każdą parę wartości klucza i przekształcić go w poniższej mapie:

{"Config" "{}", "Auth" "{}", "Other" "{}"} 

Jak mogę to zrobić z Clojure? Czy istnieje wbudowana funkcja, która to robi?

+0

Właśnie otrzymałem odpowiedź: '(zastosuj assoc {} [" Config "" {} "" Auth "" {} "" Other "" {} "])'. Czy jest jeden lepszy? –

Odpowiedz

6

Zastosowanie apply zastosować konstruktora mapę żądanego typu do wektora, tj:

(apply hash-map ["Config" "{}" "Auth" "{}" "Other" "{}"]) 

edit

Według this answer można uzyskać różne rodzaje map w zależności od sposobu oceny {} , więc użyj konstruktora mapy odpowiedniego do twoich potrzeb.

edit

Patrząc na this różnych typów obiektów zwróconych przez dosłownym {} wydaje się być błąd.

+0

Dziękuję, dobrze zrobione! Pozostawienie pytania otwartego nieco dłużej, nie lubię przyjmować odpowiedzi zbyt wcześnie, na wypadek, gdyby ktoś coś przeoczył. –

+1

"Jeśli chcesz emulować dokładnie to, co robi' {} ', użyj' tablica-mapa' zamiast 'hash-mapa'." W chwili obecnej dosłowne wyrażenie '{}' ze stałymi kluczami i wartościami byłoby również analizowane jako mapa hash (chociaż myląco oceniane jako mapa tablicowa). Zauważ, że kolejność klawiszy literału "{: a 1,: b 2,: c 3}" nie jest przestrzegana (w wersji 1.5). –

+0

@ A.Webb Zasugerował mi wynik '(typ x)'. Dlaczego zatem daje różne wartości? Z powodu tej mylącej oceny? – soulcheck

Powiązane problemy