When calling a function we indirectly invoke the apply method on the object that represents the function. We can use the anonymous inner class syntax for defining a new anonymous inner class that extends the Function relevant trait in order to create a new function. 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 Function1[Int,Int] { def apply(num:Int) = 2*num } println(func2(4)) } }
The following video shows the execution of this code sample, overviews it and provides more in-depth explanation.