Назад к вопросам
Middle
143
questionbank

Как работают лямбда-выражения в языке программирования Kotlin?

Sobes Copilot

Получайте ответы в реальном времени

Ответ от нейросети

sobes.tech AI

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

Ключевые моменты:

  • Синтаксис: Фигурные скобки {}. Параметры указываются до стрелки ->, тело функции после. Если параметров нет, стрелка необязательна.
  • Неявное имя параметра it: Если у лямбды один параметр, его можно не объявлять явно, и он будет доступен под именем it.
  • Возвращаемое значение: Последнее выражение в теле лямбды является ее возвращаемым значением.
  • Замыкания (Closures): Лямбды могут получать доступ и изменять переменные из области видимости, в которой они были определены.

Примеры:

// Лямбда без параметров
val hello = { println("Hello, world!") }
hello() // Вызов лямбды

// Лямбда с одним параметром (явное объявление)
val square = { number: Int -> number * number }
println(square(5))

// Лямбда с одним параметром (использование 'it')
val increment = { it + 1 }
println(increment(10))

// Лямбда с несколькими параметрами
val sum = { a: Int, b: Int -> a + b }
println(sum(2, 3))

// Лямбда в качестве аргумента функции высшего порядка
fun operate(a: Int, b: Int, operation: (Int, Int) -> Int): Int {
    return operation(a, b)
}
println(operate(4, 5, { x, y -> x * y })) // Передача лямбды

Сравнение с анонимными функциями (более детально):

Особенность Лямбда-выражение Анонимная функция
Синтаксис {} fun (...)
Возвращаемое значение Последнее выражение Явное return
return внутри Возвращает из родительской функции (нелокальный return) Возвращает из самой анонимной функции (локальный return)
Использование it Да (для одного параметра) Нет

Лямбды широко используются в Kotlin, особенно с функциями высшего порядка (map, filter, forEach и т.д.), для создания лаконичного и выразительного кода. Компилятор оптимизирует их использование.