Функции: объявление и параметры по умолчанию
Учимся объявлять функции и делать их вызовы гибкими.
Функция — именованный блок кода, который принимает параметры и может возвращать значение; объявляется ключевым словом
fun.
Функции — основной способ структурировать программу. В Kotlin их синтаксис лаконичен, а две идиомы — параметры по умолчанию и именованные аргументы — заметно упрощают вызовы.
Базовое объявление
После имени в скобках перечисляют параметры (имя: тип), а после двоеточия указывают тип возвращаемого значения.
fun sum(a: Int, b: Int): Int {
return a + b
}
fun main() {
println(sum(2, 3))
}Вывод:
5
Однострочные функции
Если тело — одно выражение, фигурные скобки и return заменяют знаком =. Тип результата компилятор часто выводит сам.
fun square(x: Int) = x * x
fun greet(name: String) = "Привет, $name"
fun main() {
println(square(4))
println(greet("мир"))
}Вывод:
16 Привет, мир
Параметры по умолчанию и именованные аргументы
Параметру можно задать значение по умолчанию — тогда при вызове его разрешено опустить. А именованные аргументы позволяют передавать значения в любом порядке и делают вызов читаемым.
fun greeting(name: String, prefix: String = "Привет") =
"$prefix, $name!"
fun main() {
println(greeting("Аня"))
println(greeting("Боря", "Здравствуй"))
println(greeting(prefix = "Хей", name = "Вера"))
}Вывод:
Привет, Аня! Здравствуй, Боря! Хей, Вера!
Как работает под капотом
Параметры по умолчанию избавляют от «перегрузок» — нескольких версий одной функции с разным числом аргументов, как принято в Java. Одна функция с дефолтами заменяет их все. Когда вы опускаете аргумент, компилятор подставляет в вызов значение по умолчанию. А именованные аргументы особенно полезны, когда у функции много параметров: вызов greeting(prefix = "Хей", name = "Вера") читается как фраза и не зависит от порядка.
Частые ошибки
- Создавать перегрузки вместо дефолтов. В Kotlin лучше один параметр со значением по умолчанию.
- Забывать тип возврата у блочной функции. Если тело в фигурных скобках с
return, тип результата нужно указать (кромеUnit). - Передавать аргументы не в том порядке без имён. При неочевидном порядке используйте именованные аргументы.
Итог
- Функции объявляются через
fun, тип результата — после двоеточия. - Однострочную функцию можно записать через
=безreturn. - Параметры по умолчанию заменяют множество перегрузок.
- Именованные аргументы делают вызов читаемым и независимым от порядка.