簡単に言えば、F# のシーケンスが与えられた場合、インデックス n からインデックス n+x (両端を含む) までの要素をどのように取得するのでしょうか?
したがって、次のようなシーケンスがある場合{0; 1; 2; 3; 4; 5}
、インデックス 2 から 4 までのサブシーケンスを取得するにはどうすればよいですか? 次のようになります{2; 3; 4}
大規模な組み込み F# API を使用する回答が望ましいです。
このようなもの?
let slice n x = Seq.skip n >> Seq.take (x+1)
シーケンスに十分な要素がない場合は、InvalidOperationException
.
let slice n x xs =
xs
|> Seq.windowed (x + 1)
|> Seq.nth n
Yacoderの回答とは異なり、シーケンスではなく配列を返すことに注意してください(状況に応じて、必要な場合とそうでない場合があります)。
Seq.windowed
非常に便利な関数 IMHO であるshow に回答を追加しました。Seq.pairwise
また、知っておくと便利です。