Анонимные функции (или лябда выражения) отличаются по виду от обычных тем, что не имеют имени. Ну это понятно. Анонимная функция может иметь одно выражение: например fun(x: Int, y: Int): Int = x + y
Рассмотрим следующий пример, демонстрирующий синтаксис лямбда-выражения:
{x, y -> x+y}
Это простое лямбда-выражение, которое принимает два параметра: x и y и возвращает их сумму. Параметры функции перечислены перед оператором ->, а тело функции начинается после оператора ->. Это лямбда-выражение может быть присвоено переменной и использовано следующим образом:
val sumLambda: (Int, Int) -> Int = {x,y -> x+y}
val actualSum = sumLambda(3,4)
Обратите внимание, что тип переменной, которая содержит выражение лямбда, указывает типы его параметров и возвращаемое значение.
Создание функции более высокого порядка, которая может принимать приведенное выше лямбда-выражение в качестве параметра, так же просто. Например, чтобы создать функцию, которая удваивает результат выражения лямбда, вы должны написать:
fun doubleTheResult(x:Int, y:Int, f:(Int, Int)->Int): Int {
return f(x,y) * 2
}
Вы можете вызвать эту функцию следующим образом:
val result1 = doubleTheResult(3, 4, sumLambda)
Кроме того, вы можете передать выражение лямбда прямо в функцию более высокого порядка:
val result2 = doubleTheResult(3, 4, {x,y -> x+y})
Примеры взяты с сайта https://code.tutsplus.com/