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.







