Что такое лямбда? Синтаксис и типы
Разберитесь в лямбда-выражениях: синтаксисе, типах параметров и возвращаемых значениях.
«Что такое лямбда? Синтаксис и типы» — бесплатный урок Kotlin Academy на CoddyKit. Это урок 1 из 4. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения Kotlin Academy, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс Kotlin Academy содержит 4 уроков всего.
Лямбды в одном предложении
Лямбда — это анонимная функция, то есть значение-функция, которое можно сохранить в переменной, передать другой функции или вернуть.
Базовый синтаксис лямбды
Лямбда записывается в фигурных скобках: параметры находятся слева от ->, а тело — справа.
fun main() {
val greet = { name: String -> "Hello, $name!" }
println(greet("World"))
}Лямбда без параметров
Если параметров нет, их можно полностью опустить. Последнее выражение является возвращаемым значением.
fun main() {
val random = { (1..6).random() }
println(random()) // some number 1..6
}Лямбда с несколькими параметрами
Разделяйте параметры запятыми. Указывайте типы или полагайтесь на их вывод из контекста.
fun main() {
val sum = { a: Int, b: Int -> a + b }
println(sum(3, 4)) // 7
}Вывод типов лямбды
Если лямбда присваивается переменной с указанным типом, типы параметров можно опустить.
fun main() {
val multiply: (Int, Int) -> Int = { a, b -> a * b }
println(multiply(6, 7)) // 42
}Аннотации типов лямбды
Тип (Int, Int) -> Int описывает функцию, которая принимает два значения Int и возвращает значение Int. Так задаются типы лямбд.
fun main() {
val op: (Int) -> Int = { x -> x * x }
println(op(5)) // 25
}Лямбда, возвращающая Unit
Если лямбда не возвращает полезного значения, её типом является () -> Unit. Unit — эквивалент void в Kotlin.
fun main() {
val log: (String) -> Unit = { msg -> println("[LOG] $msg") }
log("Hello")
log("World")
}Хранение лямбд в списке
Лямбды являются значениями: их можно собрать и вызвать позже.
fun main() {
val operations: List<(Int) -> Int> = listOf({ it + 1 }, { it * 2 }, { it - 3 })
for (op in operations) println(op(10))
// 11, 20, 7
}Возврат лямбды
Функция может возвращать лямбду, захватывая окружение в замыкании.
fun makeAdder(n: Int): (Int) -> Int = { x -> x + n }
fun main() {
val add5 = makeAdder(5)
println(add5(10)) // 15
println(add5(20)) // 25
}Лямбды, захватывающие переменные
Лямбды могут читать переменные из внешней области видимости и изменять их, если они объявлены с помощью var.
fun main() {
var counter = 0
val increment = { counter++ }
increment(); increment(); increment()
println(counter) // 3
}Лямбды и анонимные функции
В Kotlin также есть анонимные функции в стиле fun(x: Int): Int = x * 2. Они ведут себя как лямбды, но поддерживают явные возвращаемые типы и помеченный return.
fun main() {
val square = fun(x: Int): Int { return x * x }
println(square(8)) // 64
}Быстрая проверка
Что описывает тип (Int) -> String?
Итоги
Лямбда — это анонимная функция, записываемая как { params -> body }. Её тип имеет вид (ParamTypes) -> ReturnType. Лямбды можно сохранять, передавать, возвращать и захватывать в них переменные из внешней области видимости.
Изучай Kotlin с ИИ-репетитором — бесплатно
Пиши и запускай код прямо в браузере, получай мгновенную помощь от ИИ-репетитора 24/7 и продолжи учиться на сайте или в приложении.
- Курсы
- 51
- Уроки
- 203
Часто задаваемые вопросы
Урок «Что такое лямбда? Синтаксис и типы» бесплатный?
Да — полный текст урока «Что такое лямбда? Синтаксис и типы» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс Kotlin Academy, подпишись на CoddyKit PRO. Курс Kotlin Academy содержит 4 уроков всего.
Чему я научусь в уроке «Что такое лямбда? Синтаксис и типы»?
Разберитесь в лямбда-выражениях: синтаксисе, типах параметров и возвращаемых значениях. Ты практикуешь Kotlin Academy с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.
Нужен ли мне опыт, чтобы начать Kotlin Academy?
Предыдущий опыт не требуется. Kotlin Academy на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 1 из 4.
Сколько времени занимает урок «Что такое лямбда? Синтаксис и типы»?
Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.
Можно ли писать и запускать код в этом уроке Kotlin Academy?
Да. Каждый урок Kotlin Academy включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.
Все уроки этого курса
- Что такое лямбда? Синтаксис и типы
- Передача лямбд функциям
- it: неявный параметр
- filter, map и find для коллекций