F# F中的映射模式匹配#

F# F中的映射模式匹配#,f#,F#,根据地图: let myMap = Map.ofArray [| (1,"A");(2,"B") |] 有没有一种方法可以使用类似于列表运算符的模式匹配 大概是这样的: match myMap with //doesn't work (1, value) -> () | _ -> () 或: 我不想做的是: match myMap.TryFind(1) with //boring Some value -> ()

根据地图:

let myMap = Map.ofArray [| (1,"A");(2,"B") |]
有没有一种方法可以使用类似于列表运算符的模式匹配

大概是这样的:

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

我不想做的是:

match myMap.TryFind(1) with      //boring
    Some value -> ()
  | _          -> ()

如何使用地图进行模式匹配?

正如您所指出的,通过
TryFind
进行匹配是标准的方法,我想不出有什么令人信服的理由用活动模式对其进行简单的键检查。但是,如果要进行类似列表分解的操作(即返回找到的值和映射的其余部分),这应该可以:

let(| find | | |)键映射=
地图
|>Map.tryFind键
|>Option.map(乐趣x->x,map.remove键映射)
设map=map.of列表[1,“A”;2,“B”]
匹配地图
|找到1(x,rest)->printfn“值:%A,剩余:%A”x rest
| _ -> ()
//打印:值:“A”,剩余:映射[(2,“B”)]

编写一个名为TryFind的ActivePattern。保罗,我想你的猫碰到了键盘。我的猫远没有那么精确。
match myMap.TryFind(1) with      //boring
    Some value -> ()
  | _          -> ()