Sequences and Lazy Views
Chained Transformations
Combine filter, sort, and take in one pipeline.
chained-ops
Sequence methods chain together: filter narrows the elements, sorted orders them, and take keeps a bounded prefix, all returning new sequences.
Chained Transformations
ChainedOps.scala
Replay: real traced execution (multi-file project)
object Main {
def main(args: Array[String]): Unit = {
val limit = 2
val nums = List(5, 3, 8, 1, 9, 2)
val result = nums.filter(n => n > limit).sorted.take(3)
println("count=" + result.length)
println("result=" + result.mkString(","))
}
}
object Main {
def main(args: Array[String]): Unit = {
val limit = 1
val nums = List(5, 3, 8, 1, 9, 2)
val result = nums.filter(n => n > limit).sorted.take(3)
println("count=" + result.length)
println("result=" + result.mkString(","))
}
}
object Main {
def main(args: Array[String]): Unit = {
val limit = 3
val nums = List(5, 3, 8, 1, 9, 2)
val result = nums.filter(n => n > limit).sorted.take(3)
println("count=" + result.length)
println("result=" + result.mkString(","))
}
}
limit ← 2, nums ← List(5, 3, 8, 1, 9, 2), result ← List(3, 5, 8)
1object Main {2 def main(args: Array[String]): Unit = {3 val limit→ 2 = 2 //@limit=1, 34 val nums→ List(5, 3, 8, 1, 9, 2) = List(5, 3, 8, 1, 9, 2)5 val result→ List(3, 5, 8) = numsList(5, 3, 8, 1, 9, 2).filter(n => n > limit).sorted.take(3)67 println("count=" + result.length3)8 println("result=" + resultList(3, 5, 8).mkString(","))9 }10}outputcount=3 result=3,5,8
limit ← 1, nums ← List(5, 3, 8, 1, 9, 2), result ← List(2, 3, 5)
1object Main {2 def main(args: Array[String]): Unit = {3 val limit→ 1 = 14 val nums→ List(5, 3, 8, 1, 9, 2) = List(5, 3, 8, 1, 9, 2)5 val result→ List(2, 3, 5) = numsList(5, 3, 8, 1, 9, 2).filter(n => n > limit).sorted.take(3)67 println("count=" + result.length3)8 println("result=" + resultList(2, 3, 5).mkString(","))9 }10}outputcount=3 result=2,3,5
limit ← 3, nums ← List(5, 3, 8, 1, 9, 2), result ← List(5, 8, 9)
1object Main {2 def main(args: Array[String]): Unit = {3 val limit→ 3 = 34 val nums→ List(5, 3, 8, 1, 9, 2) = List(5, 3, 8, 1, 9, 2)5 val result→ List(5, 8, 9) = numsList(5, 3, 8, 1, 9, 2).filter(n => n > limit).sorted.take(3)67 println("count=" + result.length3)8 println("result=" + resultList(5, 8, 9).mkString(","))9 }10}outputcount=3 result=5,8,9