Higher order functions
A higher order function is simply a function that either accepts another function as a parameter, returns a function as its return value, or both.
Let's consider the first example:
fun foo(str: String, fn: (String) -> String): Unit { val applied = fn(str) println(applied) }
Here, we have defined a function foo
with two parameters. The first is a string, and the second is a function from string to string. When we say from string to string, we mean the function accepts a string input and returns another string as the output. Also note the syntax used to define the function parameter. The input types are wrapped in parentheses and the output type is separated by a thin arrow.
To invoke this function, we can pass in a function literal (recall that function literals were introduced in Chapter 4, Functions in Kotlin):
foo("hello", { it.reversed() })
As you can see, the string we pass in is hello
. This value is then passed...