Sequences and Lazy Views
Take and Drop
Split a sequence into a prefix and the rest.
take-drop
`take` keeps the first n elements and `drop` skips them, each returning a new sequence without changing the original.
Take and Drop
TakeDrop.scala
Replay: real traced execution (multi-file project)
object Main {
def main(args: Array[String]): Unit = {
val n = 2
val nums = List(1, 2, 3, 4, 5)
val firstN = nums.take(n)
val rest = nums.drop(n)
println("taken=" + firstN.mkString(","))
println("rest=" + rest.mkString(","))
}
}
object Main {
def main(args: Array[String]): Unit = {
val n = 1
val nums = List(1, 2, 3, 4, 5)
val firstN = nums.take(n)
val rest = nums.drop(n)
println("taken=" + firstN.mkString(","))
println("rest=" + rest.mkString(","))
}
}
object Main {
def main(args: Array[String]): Unit = {
val n = 4
val nums = List(1, 2, 3, 4, 5)
val firstN = nums.take(n)
val rest = nums.drop(n)
println("taken=" + firstN.mkString(","))
println("rest=" + rest.mkString(","))
}
}
n ← 2, nums ← List(1, 2, 3, 4, 5), firstN ← List(1, 2), rest ← List(3, 4, 5)
1object Main {2 def main(args: Array[String]): Unit = {3 val n→ 2 = 2 //@n=1, 44 val nums→ List(1, 2, 3, 4, 5) = List(1, 2, 3, 4, 5)5 val firstN→ List(1, 2) = numsList(1, 2, 3, 4, 5).take(n2)6 val rest→ List(3, 4, 5) = numsList(1, 2, 3, 4, 5).drop(n2)78 println("taken=" + firstNList(1, 2).mkString(","))9 println("rest=" + restList(3, 4, 5).mkString(","))10 }11}outputtaken=1,2 rest=3,4,5
n ← 1, nums ← List(1, 2, 3, 4, 5), firstN ← List(1), rest ← List(2, 3, 4, 5)
1object Main {2 def main(args: Array[String]): Unit = {3 val n→ 1 = 14 val nums→ List(1, 2, 3, 4, 5) = List(1, 2, 3, 4, 5)5 val firstN→ List(1) = numsList(1, 2, 3, 4, 5).take(n1)6 val rest→ List(2, 3, 4, 5) = numsList(1, 2, 3, 4, 5).drop(n1)78 println("taken=" + firstNList(1).mkString(","))9 println("rest=" + restList(2, 3, 4, 5).mkString(","))10 }11}outputtaken=1 rest=2,3,4,5
n ← 4, nums ← List(1, 2, 3, 4, 5), firstN ← List(1, 2, 3, 4), rest ← List(5)
1object Main {2 def main(args: Array[String]): Unit = {3 val n→ 4 = 44 val nums→ List(1, 2, 3, 4, 5) = List(1, 2, 3, 4, 5)5 val firstN→ List(1, 2, 3, 4) = numsList(1, 2, 3, 4, 5).take(n4)6 val rest→ List(5) = numsList(1, 2, 3, 4, 5).drop(n4)78 println("taken=" + firstNList(1, 2, 3, 4).mkString(","))9 println("rest=" + restList(5).mkString(","))10 }11}outputtaken=1,2,3,4 rest=5