What does the arrow ("->") operator do in Kotlin?
The ->
is a separator. It is special symbol used to separate code with different purposes. It can be used to:
Separate the parameters and body of a lambda expression
val sum = { x: Int, y: Int -> x + y }
Separate the parameters and return type declaration in a function type
(R, T) -> R
Separate the condition and body of a when expression branch
when (x) { 0, 1 -> print("x == 0 or x == 1") else -> print("otherwise") }
Here it is in the documentation.
From the Kotlin docs:
->
separates the parameters and body of a lambda expression
separates the parameters and return type declaration in a function type
separates the condition and body of a when expression branch
The ->
is part of Kotlin's syntax (similar to Java's lambda expressions syntax) and can be used in 3 contexts:
when
expressions where it separates "matching/condition" part from "result/execution" blockval greet = when(args[0]) { "Apple", "Orange" -> "fruit" is Number -> "How many?" else -> "hi!" }
lambda expressions where it separates parameters from function body
val lambda = { a:String -> "hi!" } items.filter { element -> element == "search" }
function types where it separates parameters types from result type e.g.
comparator
fun <T> sort(comparator:(T,T) -> Int){ }
Details about Kotlin grammar are in the documentation in particular:
- functionType
- functionLiteral
- whenEntry