过滤一系列选项并收集所有Somes的值.F#中有内置函数吗?

dev*_*ium 0 .net f#

F#中的一个常见模式是希望根据它是否为"某些"事物来过滤某些东西,如果是,则获取其值:

module Option =
    let values s =
        s
        |> Seq.filter Option.isSome
        |> Seq.map Option.get
Run Code Online (Sandbox Code Playgroud)

我有一个想法,我前段时间在F#库中看过类似的东西,但我现在找不到它们.有这样的功能还是我必须使用我的手卷?

谢谢

Joh*_*mer 8

最简单的方法是使用 Seq.choose

s |> Seq.choose id
Run Code Online (Sandbox Code Playgroud)

这里我们使用id的输入与输出相同