Function values are treated as objects. The function A=>B is an abbreviation for using a new object instantiated from a class that extends the scala.Function1[A,B] trait and overrides the apply function. There are currently Function1, Function2, Function3… etc… up to Function22, that takes 22 parameters. The following code sample shows that.
object HelloSample { def main(args:Array[String]):Unit = { val func1 = (num:Int) => 2*num println(func1(4)) val func2 = new MyFunction println(func2(4)) } } // (num:Int) => 2*num class MyFunction extends Function1[Int,Int] { def apply(num:Int) = 2*num }
The following video clip overviews this code sample, shows its execution and explains it.