mySequence |> Seq.iteri (fun i x -> ...) ...
シーケンスの最後にiをバインドするにはどうすればよいですか?言い換えれば、iteriによって反復された反復回数を表す値をどのようにバインドするのですか?Seq.iteriを使用して配列の最後にiを結合する方法
もちろん、refを作成してすべての繰り返しに対してiを割り当てることができますが、よりエレガントな方法があるのだろうかと思います。
mySequence |> Seq.iteri (fun i x -> ...) ...
シーケンスの最後にiをバインドするにはどうすればよいですか?言い換えれば、iteriによって反復された反復回数を表す値をどのようにバインドするのですか?Seq.iteriを使用して配列の最後にiを結合する方法
もちろん、refを作成してすべての繰り返しに対してiを割り当てることができますが、よりエレガントな方法があるのだろうかと思います。
Seq.iteri (fun i x -> ...)
は、これらの線に沿って
Seq.fold (fun i x -> ... ; i+1) 0
になるようにあなたは、倍を使用することができます。
let aSeq =
seq {
for i in 1..10 do
printfn "eval %d" i
yield i
}
let r =
aSeq
|> Seq.fold (fun i x ->
printfn "iter %d" x // or whatever is "..."
i+1) 0
printfn "result: %d" r
私はあなただけで直接する関数を使用することができます理解したようSに渡されるシーケンスの戻り長eq.iteri(Seq.iteriはシーケンス全体を繰り返します)。これは代わりに、変更可能な変数を考えるのより機能的なプログラミングの方法になります:
あなたのケースではSeq.length mySequence
:
mySequence |> Seq.iteri (fun i x -> ...)
let i = Seq.length mySequence
私にとって襞は本当に私が問題解決にアプローチする方法を変更された機能的なイディオムの一つです。あなたが月光になることができるなら、あなたはそれらといくらかの時間を過ごすべきです。 – gradbot
gradbotありがとう、私は励ましていただきありがとうございます! – Moonlight