どのように私は、シーケンスの最初の要素を取得するためにtryPickを使用していますか?
質問
私は今日Seq.firstを使用しようとしていた、とコンパイラはSeq.tryPickの賛成で廃止されましたと言います。それは関数を適用し、一部を返す最初の結果を返すことを言います。私はちょうど言うことができますね楽しいのx - > x = 0の私が最初のものは、私の場合には、一部を返します知っているが、ここに置くための適切な制約は何であるから!?正しい構文は何ですか?
を明確にするために、私は形式でそれを使用したい:
let foo(x:seq<int>) =
x.filter(fun x -> x>0)
|> Seq.tryPick (??)
解決
キーは「Seq.first」の最初の要素を返しませんでしたということで、むしろ、それはいくつかの「を選択」述語にマッチした最初の要素を返します:
let a = [1;2;3]
// two ways to select the first even number (old name, new name)
let r1 = a |> Seq.first (fun x -> if x%2=0 then Some(x) else None)
let r2 = a |> Seq.tryPick (fun x -> if x%2=0 then Some(x) else None)
あなただけの最初の要素をしたい場合は、Seq.headを使用する
let r3 = a |> Seq.head
所属していません StackOverflow