Scala higher-order functions
A higher-order function either takes other functions as arguments or returns a function as its result.
We can use this example script:
def squared(x: Int): Int = x * x def cubed(x: Int): Int = x * x * x def process(a: Int, processor: Int => Int): Int = {processor(a) } val fiveSquared = process(5, squared) val sevenCubed = process(7, cubed)
We define two functions: one squares the number passed, and the other cubes the number passed.
Next, we define a higher-order function that takes a number to work on and a processor to apply.
Lastly, we call each function. For example, we call process()
with 5
and the squared
function. The process()
function passes 5
to the squared()
function and returns the result:
We take advantage of Scala's engine automatically printing out variable values to see the expected result.
These functions are not doing very much. When I ran them, it took a few seconds for the results to display. I think there is a big performance hit using higher...