2010-11-26 23 views
8

değişmez sözlükleri ile çalışma. Onunla biraz oynadı ve bu kodla iki sözlükleri bitiştirmek başardı:Ben işlevsel bir şekilde bir sözlük oluşturmaya çalışıyorum

let d1 = dict [(1, "one"); (2, "two")] 
let d2 = dict [(4, "four")] 
let d = List.ofSeq d1 @ List.ofSeq d2 

bu F # değişmez sözlükleri ile çalışmanın doğru yolu var mı? Biraz karmaşık görünüyor.

cevap

20

dict işlevi, çoğunlukla tüm öğeleri içeren bir listeniz varsa, listeden bir sözlük oluşturan bir yardımcıdır. yani orijinal tüm unsurları ve ayrıca bazı yeni unsurlar içeren yeni bir sözlük oluşturmak - Eğer elemanları eklemek istediğinizde her koşulda bu yararlı değildir. Bu durumda

, Map türünü kullanmak daha iyidir.

// Create map from a list 
let m1 = Map.ofSeq [ (1, "one"); (2, "two") ] 
// Create map from original map by adding one element 
let m2 = m1.Add(4, "four") 

m2 için m1 tüm unsurları eklemek için, muhtemelen yazardı:

let newM2 = m1 |> Seq.fold (fun m (KeyValue(k, v)) -> Map.add k v m) m2 
+0

Ne Eşzamanlı Sözlük kullanmak isterseniz? Harita o değiştirebilir miyim? Ben Yeni sözlük ben yeni unsurlar eklemek her zaman dönecektir beri Haritası biraz yavaş olacaktır sanırım? – Kafo

İlgili konular