0Pricing
Android Academy · Урок

Функции и лямбды

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

«Функции и лямбды» — бесплатный урок Android Academy на CoddyKit. Это урок 2 из 3. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения Android Academy, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс Android Academy содержит 3 уроков всего.

Зачем нужны функции?

Функции позволяют один раз написать блок кода и использовать его в любом месте.

  • Уменьшают дублирование
  • Упрощают чтение и тестирование кода
  • Разбивают большие задачи на более мелкие части

В Kotlin функции являются объектами первого класса: их можно сохранять в переменных и передавать дальше.

Базовый синтаксис функций

В функции Kotlin используется ключевое слово fun:

fun greet(name: String): String {
    return "Hello, $name!"
}

fun main() {
    val msg = greet("Alice")
    println(msg)  // Hello, Alice!

    println(greet("Bob"))  // Hello, Bob!
}

Функции с одним выражением

Если тело функции состоит из одного выражения, можно использовать = и не писать фигурные скобки и return:

fun square(n: Int): Int = n * n

fun add(a: Int, b: Int) = a + b  // type inferred

fun main() {
    println(square(5))   // 25
    println(add(3, 7))   // 10
}

Аргументы по умолчанию и именованные аргументы

Функции Kotlin поддерживают значения параметров по умолчанию — перегрузки не нужны:

  • По умолчанию: fun greet(name: String = "World")
  • Именованные: вызовите greet(name = "Alice"), чтобы не соблюдать позиционный порядок

Аргументы по умолчанию и именованные аргументы в действии

Аргументы по умолчанию помогают сохранить чистоту программного интерфейса:

fun buildProfile(
    name: String,
    age: Int = 0,
    role: String = "User"
): String {
    return "$name | age=$age | $role"
}

fun main() {
    println(buildProfile("Alice"))
    println(buildProfile("Bob", age = 30))
    println(buildProfile("Carol", 25, "Admin"))
}

Что такое лямбды?

Лямбда — это анонимная функция, то есть функция без имени.

  • Синтаксис: { params -> body }
  • Сохраняется в переменной: val double = { x: Int -> x * 2 }
  • Передаётся другой функции в качестве аргумента

Лямбды повсюду в Android: в обработчиках нажатий, преобразованиях списков и сопрограммах.

Примеры лямбд

Сохраняйте и вызывайте лямбды так же, как обычные функции:

fun main() {
    val double = { x: Int -> x * 2 }
    println(double(4))   // 8

    val add = { a: Int, b: Int -> a + b }
    println(add(3, 5))   // 8

    // Lambda with no params
    val sayHi = { println("Hi!") }
    sayHi()              // Hi!
}

Функции высшего порядка

Функция высшего порядка принимает другую функцию в качестве параметра или возвращает функцию.

Стандартная библиотека Kotlin полна таких функций: filter, map, forEach.

Синтаксис замыкающей лямбды: если последний аргумент — лямбда, переместите её за круглые скобки.

Синтаксис замыкающей лямбды

Передайте лямбду как последний аргумент за круглыми скобками:

fun applyTwice(n: Int, operation: (Int) -> Int): Int {
    return operation(operation(n))
}

fun main() {
    val result = applyTwice(3) { x -> x * 2 }
    println(result)  // 12  (3 * 2 = 6, 6 * 2 = 12)

    // 'it' is the implicit single parameter
    val doubled = applyTwice(5) { it + it }
    println(doubled) // 20
}

Быстрая проверка

Посмотрите на этот код. Что он выведет?

val triple = { x: Int -> x * 3 }
println(triple(4))

Итоги: функции и лямбды

Вы узнали следующее:

  • fun определяет функцию с параметрами и возвращаемым типом
  • В функциях с одним выражением используется сокращённая запись с =
  • Аргументы по умолчанию и именованные аргументы заменяют перегрузки
  • Лямбды — это анонимные функции: { params -> body }
  • Функции высшего порядка принимают функции в качестве параметров

Далее: управление ходом выполнения программы с помощью условий и циклов.

Часто задаваемые вопросы

Урок «Функции и лямбды» бесплатный?

Да — полный текст урока «Функции и лямбды» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс Android Academy, подпишись на CoddyKit PRO. Курс Android Academy содержит 3 уроков всего.

Чему я научусь в уроке «Функции и лямбды»?

Определяйте функции с параметрами и типами возвращаемых значений, используйте аргументы по умолчанию и именованные аргументы, а также пишите лаконичные лямбда-выражения. Ты практикуешь Android Academy с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.

Нужен ли мне опыт, чтобы начать Android Academy?

Предыдущий опыт не требуется. Android Academy на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 2 из 3.

Сколько времени занимает урок «Функции и лямбды»?

Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.

Можно ли писать и запускать код в этом уроке Android Academy?

Да. Каждый урок Android Academy включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.

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

  1. Переменные и типы данных
  2. Функции и лямбды
  3. Управление потоком выполнения
← Назад к Android Academy