Defining function types

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 place a question mark:

val nullableFun: (() -> Unit)? = null

Without them, it would mean that the return type of a function type is nullable, like in this example:

val nullableReturnType: () -> String? = { null }
..................Content has been hidden....................

You can't read the all page of ebook, please click here login for view all page.
Reset
18.226.4.235