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.







