2013-07-20 8 views
6

Jestem pewien, że to jest łatwe, ale podejrzewam, że będę miał wiele małych pytań na drodze do idomatic clojure. Może coś przeoczyłem, ale patrząc na stronę mapy kłamstwa, nie znalazłem rozwiązania.Utwórz mapę, gdy masz wektor kluczy i wartości

Biorąc pod uwagę dwa wektory (jeden z kluczy innych wartości), jak skutecznie (słowo kluczowe!) Utworzyć mapę z klucza do wartości?

Klucze i wartości są poniżej:

(:year :month :day) (core/split "2013-02-18" #"-") 

Odpowiedz

16

Naturalnym rozwiązaniem jest użycie zipmap:

(zipmap [:year :month :day] (clojure.string/split "2013-02-18" #"-")) 
;= {:day "18", :month "02", :year "2013"} 

Dla małej mapie jak ta w rzeczywistości jest dość skuteczny. Aby uzyskać większą mapę, należy użyć trybu nieustalonego, który obecnie nie jest używany. Jest bilet na to w JIRA, z dołączoną łatką: CLJ-1005.

Oczywiście jest to dość proste, aby włączyć wersję przejściową zipmap w swojej własnej bazie kodów i użyć jej zamiast tej w clojure.core. Jest to bardzo ważna rzecz, jeśli chcesz zapakować większe mapy.

Kod może zostać skopiowany z łaty lub z biblioteki głównej ClojureScript, która korzysta z przebiegów przejściowych w swojej zipmap; tutaj link do ClojureScript source od wersji 1844 (ta konkretna funkcja może być używana w Clojure bez żadnych zmian).

+0

Świetna odpowiedź. Clojure do tej pory jest świetny, czuję się zwolniony z wizualizacji programowania OO ... – Core

Powiązane problemy