Назад к вопросам
Middle
145
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 и т.д.), для создания лаконичного и выразительного кода. Компилятор оптимизирует их использование.