Лямбда-выражение – это функция, записанная в виде выражения, и которую можно передавать как аргумент в другие функции
Фактически лямбды представляют сокращенную запись функций.
Лямбда-выражения оборачиваются в фигурные скобки:
В данном случае лямбда-выражение выводит на консоль строку "hello"
Лямбда-выражение можно сохранить в обычную переменную и затем вызывать через имя этой переменной как обычную функцию.
В данном случае лямбда сохранена в переменную hello и через эту переменную вызывается два раза.
Также лямбда-выражение можно выполнить сразу при определении с помощью оператора run:
Передача параметров
Лямбды как и функции могут принимать параметры. Для передачи параметров используется стрелка ->
Параметры указываются слева от стрелки, а тело лямбда-выражения, то есть сами выполняемые действия, справа от стрелки.
Здесь лямбда-выражение принимает один параметр типа String, значение которого выводится на консоль.
Если параметров несколько, то они передаются слева от стрелки через запятую:
Если в лямбда-выражении надо выполнить не одно, а несколько действий, то эти действия можно размещать на отдельных строках после стрелки:
Возвращение результата
Выражение, стоящее после стрелки, определяет результат лямбда-выражения. И этот результат мы можем присвоить, например, переменной.
Если лямбда-выражение формально не возвращает никакого результата, то фактически, как и в функциях, возвращается значение типа Unit:
В обоих случаях используется функция println, которая формально не возвращает никакого значения (точнее возвращает объект типа Unit)
Но также может возвращаться конкретное значение:
Здесь выражение справа от стрелки x + y продуцирует новое значение - сумму чисел, и при вызове лямбда-выражения это значение можно передать переменной.
Если лямбда-выражение многострочное, состоит из нескольких инструкций, то возвращается то значение, которое генерируется последней инструкцией:
Последнее выражение по сути представляет число - сумму чисел x и y и оно будет возвращаться в качестве результата лямбда-выражения.
Стоить запомнить
- - Лямбда-выражение имеет вид: { x: Int -> x + 5 }
- Лямбда-выражения заключаются в фигурные скобки, могут включать параметры и содержат тело.
- Лямбда-выражение может состоять из нескольких строк. Последнее вычисленное выражение в теле используется как возвращаемое значение лямбда-выражения.
- Лямбда-выражение можно присвоить переменной. Тип переменной должен быть совместим с типом лямбда-выражения.
Тип лямбда-выражения имеет формат:
- (параметры) -> возвращаемое_значение
- Там, где это возможно, компилятор старается автоматически определить тип параметров лямбда-выражений.
- Если лямбда-выражение получает один параметр, его можно заменить обозначением it.
- Чтобы выполнить лямбда-выражение, вы либо передаете ему параметры в круглых скобках, либо вызываете его функцию invoke.