簡體   English   中英

在 F# 中多次更新 map

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM