Scala allows us to define variables, function parameters and function returned values with a type that is a function. We can even specify the exact signature of that function.
import annotation.tailrec object Program { def main(args: Array[String]):Unit = { var func:(Int,Int)=>Int = sum; println(func(4,3)) func = multiply println(func(4,3)) } def sum(a:Int,b:Int):Int = a+b def multiply(a:Int,b:Int):Int = a*b }
The following video clip overviews this code samples, shows its execution and explains it.