这对我来说似乎很难。我需要从序列中提取包含在Some(x)中的x值。我可以用
做到xs |> Seq.fold (fun state x -> match x with -> | Some(y) -> y::state | None -> state) []
|> Seq.toList
|> List.rev
|> List.toSeq
有更好的方法吗?
答案 0 :(得分:5)
这很简单
xs |> Seq.choose id
答案 1 :(得分:4)
对于实际上不是标准选项类型的区别联合,您只需要向Seq.choose
提供一个函数,该函数接受您的区分联合的实例并将其映射到标准选项。有点像...
xs |> Seq.choose (function Nothing _ -> None | Something x -> Some x)