Sequences and Lazy Views
Indexing and Slicing
Read one element and a slice of a sequence.
index-slice
A sequence is indexed from zero, so `nums(at)` reads one element. `slice` returns the elements between two positions as a new sequence.
Indexing and Slicing
IndexSlice.scala
Replay: real traced execution (multi-file project)
object Main {
def main(args: Array[String]): Unit = {
val at = 2
val nums = List(10, 20, 30, 40, 50)
val item = nums(at)
val middle = nums.slice(1, 4)
println("item=" + item)
println("middle=" + middle.mkString(","))
println("size=" + nums.length)
}
}
object Main {
def main(args: Array[String]): Unit = {
val at = 0
val nums = List(10, 20, 30, 40, 50)
val item = nums(at)
val middle = nums.slice(1, 4)
println("item=" + item)
println("middle=" + middle.mkString(","))
println("size=" + nums.length)
}
}
object Main {
def main(args: Array[String]): Unit = {
val at = 4
val nums = List(10, 20, 30, 40, 50)
val item = nums(at)
val middle = nums.slice(1, 4)
println("item=" + item)
println("middle=" + middle.mkString(","))
println("size=" + nums.length)
}
}
at ← 2, nums ← List(10, 20, 30, 40, 50), item ← 30, middle ← List(20, 30, 40)
1object Main {2 def main(args: Array[String]): Unit = {3 val at→ 2 = 2 //@at=0, 44 val nums→ List(10, 20, 30, 40, 50) = List(10, 20, 30, 40, 50)5 val item→ 30 = nums(at)306 val middle→ List(20, 30, 40) = numsList(10, 20, 30, 40, 50).slice(1, 4)78 println("item=" + item30)9 println("middle=" + middleList(20, 30, 40).mkString(","))10 println("size=" + nums.length5)11 }12}outputitem=30 middle=20,30,40 size=5
at ← 0, nums ← List(10, 20, 30, 40, 50), item ← 10, middle ← List(20, 30, 40)
1object Main {2 def main(args: Array[String]): Unit = {3 val at→ 0 = 04 val nums→ List(10, 20, 30, 40, 50) = List(10, 20, 30, 40, 50)5 val item→ 10 = nums(at)106 val middle→ List(20, 30, 40) = numsList(10, 20, 30, 40, 50).slice(1, 4)78 println("item=" + item10)9 println("middle=" + middleList(20, 30, 40).mkString(","))10 println("size=" + nums.length5)11 }12}outputitem=10 middle=20,30,40 size=5
at ← 4, nums ← List(10, 20, 30, 40, 50), item ← 50, middle ← List(20, 30, 40)
1object Main {2 def main(args: Array[String]): Unit = {3 val at→ 4 = 44 val nums→ List(10, 20, 30, 40, 50) = List(10, 20, 30, 40, 50)5 val item→ 50 = nums(at)506 val middle→ List(20, 30, 40) = numsList(10, 20, 30, 40, 50).slice(1, 4)78 println("item=" + item50)9 println("middle=" + middleList(20, 30, 40).mkString(","))10 println("size=" + nums.length5)11 }12}outputitem=50 middle=20,30,40 size=5