Higher-Order Functions
Passing a Function
Give a method a function that decides the order.
function-parameter
A higher-order method takes a function as an argument. `sortWith` accepts a function that compares two elements and uses it to order the list.
Passing a Function
FunctionParameter.scala
Replay: real traced execution (multi-file project)
object Main {
def main(args: Array[String]): Unit = {
val first = 3
val nums = List(first, 1, 2)
val sorted = nums.sortWith((a, b) => a < b)
val text = sorted.mkString(",")
println("first=" + first)
println("text=" + text)
}
}
object Main {
def main(args: Array[String]): Unit = {
val first = 0
val nums = List(first, 1, 2)
val sorted = nums.sortWith((a, b) => a < b)
val text = sorted.mkString(",")
println("first=" + first)
println("text=" + text)
}
}
object Main {
def main(args: Array[String]): Unit = {
val first = 5
val nums = List(first, 1, 2)
val sorted = nums.sortWith((a, b) => a < b)
val text = sorted.mkString(",")
println("first=" + first)
println("text=" + text)
}
}
first ← 3, nums ← List(3, 1, 2), sorted ← List(1, 2, 3), text ← 1,2,3
1object Main {2 def main(args: Array[String]): Unit = {3 val first→ 3 = 3 //@first=5, 04 val nums→ List(3, 1, 2) = List(first3, 1, 2)5 val sorted→ List(1, 2, 3) = numsList(3, 1, 2).sortWith((a, b) => a < b)6 val text→ 1,2,3 = sortedList(1, 2, 3).mkString(",")78 println("first=" + first3)9 println("text=" + text1,2,3)10 }11}outputfirst=3 text=1,2,3
first ← 0, nums ← List(0, 1, 2), sorted ← List(0, 1, 2), text ← 0,1,2
1object Main {2 def main(args: Array[String]): Unit = {3 val first→ 0 = 04 val nums→ List(0, 1, 2) = List(first0, 1, 2)5 val sorted→ List(0, 1, 2) = numsList(0, 1, 2).sortWith((a, b) => a < b)6 val text→ 0,1,2 = sortedList(0, 1, 2).mkString(",")78 println("first=" + first0)9 println("text=" + text0,1,2)10 }11}outputfirst=0 text=0,1,2
first ← 5, nums ← List(5, 1, 2), sorted ← List(1, 2, 5), text ← 1,2,5
1object Main {2 def main(args: Array[String]): Unit = {3 val first→ 5 = 54 val nums→ List(5, 1, 2) = List(first5, 1, 2)5 val sorted→ List(1, 2, 5) = numsList(5, 1, 2).sortWith((a, b) => a < b)6 val text→ 1,2,5 = sortedList(1, 2, 5).mkString(",")78 println("first=" + first5)9 println("text=" + text1,2,5)10 }11}outputfirst=5 text=1,2,5