Найти тему
KOTLIN_IT

Урок №35 по Котлин. Лямбда-выражения

Оглавление
Лямбда-выражение – это функция, записанная в виде выражения, и которую можно передавать как аргумент в другие функции
Фактически лямбды представляют сокращенную запись функций.

Лямбда-выражения оборачиваются в фигурные скобки:

-2

В данном случае лямбда-выражение выводит на консоль строку "hello"

Лямбда-выражение можно сохранить в обычную переменную и затем вызывать через имя этой переменной как обычную функцию.

-3

В данном случае лямбда сохранена в переменную hello и через эту переменную вызывается два раза.

Также лямбда-выражение можно выполнить сразу при определении с помощью оператора run:

-4

Передача параметров

Лямбды как и функции могут принимать параметры. Для передачи параметров используется стрелка ->

Параметры указываются слева от стрелки, а тело лямбда-выражения, то есть сами выполняемые действия, справа от стрелки.

-5

Здесь лямбда-выражение принимает один параметр типа String, значение которого выводится на консоль.

Если параметров несколько, то они передаются слева от стрелки через запятую:

-6

Если в лямбда-выражении надо выполнить не одно, а несколько действий, то эти действия можно размещать на отдельных строках после стрелки:

-7

Возвращение результата

Выражение, стоящее после стрелки, определяет результат лямбда-выражения. И этот результат мы можем присвоить, например, переменной.

Если лямбда-выражение формально не возвращает никакого результата, то фактически, как и в функциях, возвращается значение типа Unit:

-8

В обоих случаях используется функция println, которая формально не возвращает никакого значения (точнее возвращает объект типа Unit)

Но также может возвращаться конкретное значение:

-9

Здесь выражение справа от стрелки x + y продуцирует новое значение - сумму чисел, и при вызове лямбда-выражения это значение можно передать переменной.

Если лямбда-выражение многострочное, состоит из нескольких инструкций, то возвращается то значение, которое генерируется последней инструкцией:

-10

Последнее выражение по сути представляет число - сумму чисел x и y и оно будет возвращаться в качестве результата лямбда-выражения.

Стоить запомнить

  • - Лямбда-выражение имеет вид: { x: Int -> x + 5 }
  • Лямбда-выражения заключаются в фигурные скобки, могут включать параметры и содержат тело.
  • Лямбда-выражение может состоять из нескольких строк. Последнее вычисленное выражение в теле используется как возвращаемое значение лямбда-выражения.
  • Лямбда-выражение можно присвоить переменной. Тип переменной должен быть совместим с типом лямбда-выражения.

Тип лямбда-выражения имеет формат:

  • (параметры) -> возвращаемое_значение
  • Там, где это возможно, компилятор старается автоматически определить тип параметров лямбда-выражений.
  • Если лямбда-выражение получает один параметр, его можно заменить обозначением it.
  • Чтобы выполнить лямбда-выражение, вы либо передаете ему параметры в круглых скобках, либо вызываете его функцию invoke.