Function references
So far in this chapter, we have already seen how to pass functions as parameters. The ways we have done this so far are either by creating a function literal, or by using a function that returns another function.
Top-level function references
But what if we have a top-level function and we want to use that? We can wrap the function in another function, of course:
fun isEven(k: Int): Boolean = k % 2 == 0 val ints = listOf(1, 2, 3, 4, 5) ints.filter { isEven(it) }
The alternative is to use what is called a function reference. Using the same definition for isEven
, we can write it as follows:
val ints = listOf(1, 2, 3, 4, 5) ints.filter(::isEven)
Note that the ::
syntax is used before the function name.
Member and extension function references
Function references can be used for extension and member functions by prefixing them with the name of the class. Let's define an extension function on integers called isOdd
, as follows...