Seq.choose<'T,'U> 函数 (F#)

将给定函数应用于列表中的每个元素并返回一个列表,该列表包含此函数返回 Some 及某个值的每个元素的结果。

命名空间/模块路径:Microsoft.FSharp.Collections.Seq

程序集:FSharp.Core(在 FSharp.Core.dll 中)

// Signature:
Seq.choose : ('T -> 'U option) -> seq<'T> -> seq<'U>

// Usage:
Seq.choose chooser source

参数

  • chooser
    类型:'T -> 'U option

    用于将类型 T 的项转换为类型 U 的选项的函数。

  • source
    类型:seq<'T>

    类型 T 的输入序列。

异常

异常

Condition

ArgumentNullException

在输入序列为 null 时引发。

返回值

结果序列。

备注

返回的序列可在线程间安全地传递。 但是,不应以并发方式访问从返回的序列中生成的单个 IEnumerator 值。

此函数在编译的程序集中名为 Choose。 如果从 F# 以外的语言中访问函数,或通过反射访问成员,请使用此名称。

示例

以下代码示例演示如何通过与返回选项的类型模式匹配的 lambda 表达式使用 Seq.choose 从序列中选择元素。

let numbers = seq {1..20}
let evens = Seq.choose(fun x -> 
                            match x with
                            | x when x%2=0 -> Some(x)
                            | _ -> None ) numbers
printfn "numbers = %A\n" numbers
printfn "evens = %A" evens
  

平台

Windows 7、Windows Vista SP2、Windows XP SP3、Windows XP x64 SP2、Windows Server 2008 R2、Windows Server 2008 SP2、Windows Server 2003 SP2

版本信息

F# 运行时

受以下版本支持:2.0、4.0

Silverlight

受以下版本支持:3

请参见

参考

Collections.Seq 模块 (F#)

Microsoft.FSharp.Collections 命名空间 (F#)