Lambda functions are anonymous functions which are usually created during a function call to act as a function parameter. They are declared by surrounding expressions with {braces} - if arguments are needed, these are put before an arrow ->
.
{ name: String ->
"Your name is $name" //This is returned
}
The last statement inside a lambda function is automatically the return value.
The type's are optional, if you put the lambda on a place where the compiler can infer the types.
Multiple arguments:
{ argumentOne:String, argumentTwo:String ->
"$argumentOne - $argumentTwo"
}
If the lambda function only needs one argument, then the argument list can be omitted and the single argument be referred to using it
instead.
{ "Your name is $it" }
If the only argument to a function is a lambda function, then parentheses can be completely omitted from the function call.
# These are identical
listOf(1, 2, 3, 4).map { it + 2 }
listOf(1, 2, 3, 4).map({ it + 2 })