对我来说,这似乎是一个脑子.我需要从序列中提取包含在Some(x)中的x值.我可以做到
xs |> Seq.fold (fun state x -> match x with -> | Some(y) -> y::state | None -> state) []
|> Seq.toList
|> List.rev
|> List.toSeq
Run Code Online (Sandbox Code Playgroud)
有更好的方法吗?
对于实际上不是标准 Option 类型的可区分联合,您只需要提供一个函数,Seq.choose该函数采用可区分联合的实例并将其映射到标准 Option。就像是...
xs |> Seq.choose (function Nothing _ -> None | Something x -> Some x)
Run Code Online (Sandbox Code Playgroud)