Функции и лямбды
Определяйте функции с параметрами и типами возвращаемых значений, используйте аргументы по умолчанию и именованные аргументы, а также пишите лаконичные лямбда-выражения.
«Функции и лямбды» — бесплатный урок 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 — локальная установка не требуется.
Все уроки этого курса
- Переменные и типы данных
- Функции и лямбды
- Управление потоком выполнения