F#中的let绑定中的模式匹配

时间:2014-06-23 14:24:57

标签: f# pattern-matching

我想做:

let Some(x) = bar in ...

但除非我这样做,否则我无法做到这一点

let Some(x) as idontcare = bar in ...

是否有更好的方式说"我不关心整个模式,只是匹配内部"

(我会使用_,但这不会解析,所以我使用的是__

是的,我知道这是部分的,我只是在做一个快速的脚本。

编辑:这只是一个内置和类型的示例,因此Option.get不是通用的;另外,我希望它像Haskell let-bindings一样内联。

2 个答案:

答案 0 :(得分:7)

let Some(x) = bar

定义一个新函数Some,遮蔽现有构造函数。相反,你想要:

let (Some(x)) = bar

答案 1 :(得分:3)

您可以使用match

match bar with | Some(x) -> ...

如果您尝试专门匹配某个选项,则可以使用Option.get

bar |> Option.get |> ...