Scala では、長さを知らなくても、リストの n 番目の要素から最後までのリストのスライスを取得するにはどうすればよいでしょうか? 質問する

Scala では、長さを知らなくても、リストの n 番目の要素から最後までのリストのスライスを取得するにはどうすればよいでしょうか? 質問する

リストの長さを指定せずに、要素 n 以降のリストのスライスを取得するエレガントな方法を探しています。複数行の文字列があり、それを複数の行に分割して、3 行目以降のすべての行のリストを取得したいとします。

string.split("\n").slice(3,X)       // But I don't know what X is...

ここで私が本当に興味を持っているのは、呼び出しによって返されたリストの参照を取得して、呼び出し時にsplitその長さを に代入できる方法があるかどうかです。これは、一種のファンシーな(その場合は と読み込まれます) のようなものです。Python では、スライスの最後の要素を指定する必要はありません。Xslice_slice(3,_.length)

もちろん、分割後に一時変数を使用したり、適切な構文を持つヘルパー関数を作成したりすることでこれを解決できますが、私はただ興味があるだけです。

ベストアンサー1

必要のない最初の n 要素を削除するだけです。

List(1,2,3,4).drop(2)
res0: List[Int] = List(3, 4)

またはあなたの場合:

string.split("\n").drop(2)

反対のことを行うpaired メソッドもあり.take(n)、それは と考えることができます.slice(0,n)

両方の部分が必要な場合は、以下を使用します.splitAt

val (left, right) = List(1,2,3,4).splitAt(2)
left: List[Int] = List(1, 2)
right: List[Int] = List(3, 4)

おすすめ記事