aşağıdaki sorununa çözüm bulma konusunda sorun yaşıyorum:Birleştirme iki kompleks veri yapıları
Ben bir harita var Sağlar ki:
(def defaults {
:name "John"
:surname "Doe"
:info {:date-of-birth "01-01-1980"
:registered [{:type "newsletter" :name "breaking news" }]}
})
Sonra benzer bir yapısal harita geçmesine ama yapmak istiyorum vektörleri birleştirirsek ve tuşların geri kalanını yaz:
(def new {
:name "Peter"
:info {:date-of-birth "11-01-1986"
:registered [{:type "alert" :name "mobile-alert" }]}
})
ve bu sonucu istiyorum:
{:name "Peter"
:surname "Doe"
:info {:date-of-birth "11-01-1986"
:registered [{:type "newsletter" :name "breaking news" }
{:type "alert" :name "mobile-alert" }]}}
Şimdi böyle statik sözdizimi kullanarak kolayca yapabilirsiniz:
(reduce conj (get-in defaults [:info :registered]) (get-in new [:info :registered]))
(Orada muhtemelen daha iyi bir yol ...) Ama aşağıdaki özelliklere sahip dinamik bir fonksiyonun daha umuyordum:
bir anahtarın val sonra,bir vektör ise- anında harita
- den
- güncel yapısıyla değerlerle herhangi anahtarları bilmeden, her iki haritalardan tüm anahtarları tutun 013.210 sağ haritanın vektörü ile vektör (uygun anahtar tabii varsa) önceden yardım için
Teşekkür :)
+1 “Birleştirme” ile ilgili tamamen unutulmuş. –
Mükemmel çalışır. Birleştirme ile ilgisi olduğunu düşündüm ama bunu çözemedim ... Şerefe! –