gpt4 book ai didi

f# - 与F#中的 map 进行模式匹配

转载 作者:行者123 更新时间:2023-12-04 10:09:23 25 4
gpt4 key购买 nike

给定 map :

let myMap = Map.ofArray [| (1,"A");(2,"B") |]

有没有一种方法可以使用类似于列表cons运算符的模式匹配?

像这样的东西:
match myMap with      //doesn't work
(1, value) -> ()
| _ -> ()

或者:
match myMap with      //doesn't work 
1::value -> ()
| _ -> ()

我不想做的是这样的:
match myMap.TryFind(1) with      //boring
Some value -> ()
| _ -> ()

如何与 map 进行模式匹配?

最佳答案

如您所述,通过TryFind进行匹配是标准方法,我想不出有什么令人信服的理由将其与事件模式包装在一起以进行简单的 key 检查。但是,如果您要进行列表解构之类的操作(即返回找到的值和 map 的其余部分),则应该可以:

let (|Found|_|) key map =
map
|> Map.tryFind key
|> Option.map (fun x -> x, Map.remove key map)

let map = Map.ofList [1, "A"; 2, "B"]
match map with
| Found 1 (x, rest) -> printfn "Value: %A, Remaining: %A" x rest
| _ -> ()

//prints: Value: "A", Remaining: map [(2, "B")]

关于f# - 与F#中的 map 进行模式匹配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12483707/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com