Jak przekonwertować mapę Clojure do łańcucha, prawie parę kluczy wartości, jak pokazano poniżej:Konwersja map klucze i wartości do tablicy ciągów
Clojure dane:
(def data { :starks "Winter is coming" :Lannisters "Hear me roar" })
Chcę przekształcić powyższe do
"starks" "winter is coming" "Lannisters" "hear me roar"
nie chcę żadnych identyfikatorów/separatory pomiędzy ale oczywiście "starks"
zawsze powinny być przestrzegane przez "winter is coming"
Próbowałem to:
(str (keys data) (vals data))
które wyjścia to:
"(:starks :Lannisters)(\"Winter is coming\" \"Hear me roar\")"
co nie jest to, co chcę w ogóle ...
- Do map klucze i wartości danych nie są zawsze taki sam, więc musi być generyczny
- zawsze będzie tylko jeden poziom, jako że wartość nie będzie zawierała zagnieżdżonego map itp ..
Edit
Co ja właściwie próbuje zrobić:
Próbuję indeks kilka tysięcy Neo4j węzły z Clojure. Aby pomóc mi w tym zadaniu, używam biblioteki Neocons Clojure neo4j.
Według documentation The add-to-index
akceptuje właściwości i wartości tak:
(nn/add-to-index (:id node) (:name idx) "username" "joe")))
który jest w moim powyższym przypadku będzie wyglądać
(nn/add-to-index (:id node) (:name idx) "starks" "winter is coming" "Lannisters" "Hear me roar")))
teraz, mam Node , Mogę uzyskać dostęp do właściwości węzła za pomocą (:data node)
i to daje mi mapę clojure.
Obiekt różni się prawie od węzła do węzła, więc próbuję dowiedzieć się, jak przekazać tę mapę do biblioteki w taki sposób, że rozumie ..
Marius Danila „s got me odpowiedź prawie na miejscu.
Doing
(map name (apply concat data))
nadal skarży się na trzecim parametrem, gdyż ma nawiasy wokół wyniku.
Jak mogę to osiągnąć? Czy muszę po prostu napisać wiele bloków if-not
, aby samemu skonstruować właściwości?
Dzięki
Ooh, to ma teraz sens! Dziękuję bardzo, zmodyfikuję mój kod, aby to odzwierciedlić. Dzięki jeszcze raz! – LocustHorde
tak, to działa idealnie, dziękuję! Przysięgam, że mogę dodać kilka nieruchomości jednocześnie ... ale oczywiście myślę o czymś innym. Dzięki jeszcze raz! – LocustHorde