[英]Updating map multiple times in F#
假設我有一個 map M:Map<int, bool>
(最初為空)。 這次我想更新。 我有一個列表L = [1.. 100]
並且對於此列表中的每個元素,我想將M
中的相應值設置為 false。 類似於[1.. 100] |> List.map (fun x -> M.Add(x, false))
。 但是M.Add()
每次都會返回一個新的 map 並且不會反映更新。 如何以慣用的 F# 方式進行此更新?
您可以為此使用折疊:
let m = [1 .. 100]
|> List.fold( fun (acc:Map<int,bool>) x -> acc.Add(x, false)) Map.empty
折疊將累加器和當前值作為參數。 您可以在此處使用 Add 方法返回更新后的 Map。
對於您的特定情況,您還可以考慮使用字典:
let m2 = [1 .. 100]
|>List.map(fun x->(x,false))
|>dict
我想我有一個可行的解決方案。 我沒有先聲明 Map 然后更新它(每次都會返回一個新的 Map),而是先構建一個列表,然后將該列表轉換為 Map。
[1 .. 100]
|> List.map
(fun x ->
(x, false)
)
|> Map.ofList
我不知道這個解決方案是否有用,因為我對 F# 還很陌生。 我很高興知道這個解決方案是否可以改進。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.