Kotlin Academy · Урок

Что такое лямбда? Синтаксис и типы

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

Урок 1 из 413 шагов

«Что такое лямбда? Синтаксис и типы» — бесплатный урок 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 — локальная установка не требуется.

Все уроки этого курса

  1. Что такое лямбда? Синтаксис и типы
  2. Передача лямбд функциям
  3. it: неявный параметр
  4. filter, map и find для коллекций
← Назад к Kotlin Academy