senin sözlüğün türü nedir?
o, o zaman deneyin önerir kod pasajı olarak IDictionary
olmayan jenerik ise aşağıda listelenmiştir (kolayca çalışabilirsiniz bir daktilo koleksiyonu almak için Seq.cast<>
eklemem gerekiyor böylece F # yılında for
örtük, dönüşümleri eklemez):
for entry in dict do
// use 'entry.Value' and 'entry.Key' here
:
for entry in dict |> Seq.cast<DictionaryEntry> do
// use 'entry.Value' and 'entry.Key' here
Eğer kütüphaneye üzerinde herhangi bir kontrol varsa o zaman (Seq.cast
çağrısını gerekmez jenerik IDictionary<'K, 'V>
kullanıyorsanız, bu) önceki seçeneğe daha iyidir 0
Eğer immutable F # Map<'K, 'V>
tipini kullanıyorsanız (F # içinde fonksiyonel kod yazıyorsanız kullanacağınız en iyi yöntem hangisidir) o zaman çözümü Pavel ile kullanabilirsiniz veya for
döngü ile birlikte KeyValue
aktif modelini kullanabilirsiniz. Bu: her iki durumda
for KeyValue(k, v) in dict do
// 'k' is the key, 'v' is the value
, ya for
veya çeşitli iter
işlevlerini kullanabilirsiniz. Yan etkileri olan bir şey yapman gerekiyorsa, o zaman for
döngüsünü tercih ederim (ve bu, bu :-) den bahsettiğim ilk cevap değildir), çünkü bu, bu amaç için tasarlanmış bir dil yapısıdır. Fonksiyonel işleme için Seq.filter
vb. Gibi çeşitli işlevleri kullanabilirsiniz.
Meraklı - printfn yerine dizinin sonunda bir \ n ile printfn için herhangi bir sebep var mı? –
printfn'yi gördüğümde karşıt soruyu soruyorum. Sebebi yok, sadece kişisel tercih. –