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

时间:2015-06-17 03:02:12

标签: .net f#

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

module Option =
    let values s =
        s
        |> Seq.filter Option.isSome
        |> Seq.map Option.get

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

由于

1 个答案:

答案 0 :(得分:8)

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

s |> Seq.choose id

这里我们使用id,因为输入与输出

相同