FSharp--过滤掉Nones的最短路径?

Mic*_*cah 5 f#

假设我正在使用如下列表:

let items = [ Some(1); None; Some(8); ];;

获取Some列表中的值的最短方法是什么?

items |> List.filter Option.isSome;;

这是最快的吗?使用Option.isSome有任何缺点吗?

Car*_*ten 10

要获取Some列表中所有实例的值,items :: a option list您可以使用List.choose:

let values = List.choose id items
Run Code Online (Sandbox Code Playgroud)

这会产生[1; 8]你的例子.