Functions are first-class citizens in Kotlin. You can define function types and store them in variables. Functions can return other functions and accept functions as arguments.
Let's take a look at an example of how to define a function type and initialize the variable with a lambda:
val multiplier: (Int, Int) -> Int = { a, b -> a * b }
This function type has two parameters of type Int
and returns an Int
. The function type syntax always starts with parentheses, where you declare function parameters, then the arrow, and after the arrow, a return type.
Here's how you'd declare a function type that has no parameters and no return type:
val print: () -> Unit = { println("Kotlin") }
Of course, type inference works on function types, so the preceding example could have been written like this:
val print2 = { println("Kotlin") }
Function types can also be nullable; notice how we need to wrap the whole function type inside another set of parentheses and then...