どのように私は、シーケンスの最初の要素を取得するためにtryPickを使用していますか?

StackOverflow https://stackoverflow.com/questions/1481957

  •  18-09-2019
  •  | 
  •  

質問

私は今日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 
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top