Higher-order functions
We know that we can only pass a first-class value object as an argument to a method or a function. For example, take this simple method:
def sum(a: Int, b: Int) = a + b
This is a method named sum
and declares two parameters a
and b
. Now, to use this method, we will pass arguments. In the argument list, it's obvious we'll have to pass values of the integer type. It's clear that any type, if it's a value, can be declared as a function parameter and can be used as an argument while calling a function.
In Scala, function literals are nothing more than function trait objects, hence it's obvious that we can declare them as parameters and use them as arguments. This gives rise to functions which contain functions as parameters, and function calls which contain function literals as arguments. These types of functions are called higher-order functions (HOF). Using higher-order functions has its own advantages. We've already seen a couple of those. Wherever we define abstract...