1

これは私には頭が悪いようです。シーケンスから Some(x) にラップされた x 値を抽出する必要があります。私はそれを行うことができます

xs |> Seq.fold (fun state x -> match x with -> | Some(y) -> y::state | None -> state) [] 
    |> Seq.toList 
    |> List.rev 
    |> List.toSeq

より良い方法はありますか?

4

2 に答える 2

5

Seq.choose実際には標準の Option 型ではない判別共用体の場合は、判別共用体のインスタンスを取り、それを標準の Option にマップする関数を提供するだけで済みます。何かのようなもの...

xs |> Seq.choose (function Nothing _ -> None | Something x -> Some x)
于 2013-09-28T21:54:58.100 に答える