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 -> ()
| _ -> ()