Прямые ссылки на публичные уроки для быстрого старта и стабильной индексации lesson-страниц.
main()Функция — это фрагмент кода, выполняющий конкретную задачу, к которому можно обращаться из любого места программы неограниченное количество раз. Это исключает дублирование кода и упрощает архитектуру проекта.
Функция main() — зарезервированная точка входа в программу. С неё начинается выполнение кода. Объявлять новые функции внутри других функций нельзя — только вызывать.
Синтаксис объявления функции:
fun имяФункции() { // тело функции }
fun — ключевое слово для объявления функции() — для входных параметров (пока пустые){} — тело функцииПример: функция считывает имя пользователя с клавиатуры и выводит его в консоль.
fun getName() { println("Введите имя:") val name = readLine() println(name) }
Объявленная функция не выполняется автоматически — её нужно явно вызвать внутри main():
fun main() { getName() }
При запуске программа выполняет код в main(), затем переходит внутрь getName(). После завершения getName() возвращается в main() и продолжает выполнение дальше.
Расширенный пример с двумя функциями:
fun main() { getName() getAge() } fun getName() { println("Введите имя:") val name = readLine() println(name) } fun getAge() { println("Введите возраст:") val age = readLine()?.toInt() println(age) }
Функция может возвращать значение в место вызова. Для этого необходимо:
return.
?после типа обеспечивает null-безопасность. Подробнее это будет разобрано в отдельном уроке.
fun main() { val name = getName() val age = getAge() } fun getName(): String? { println("Введите имя:") return readLine() } fun getAge(): Int? { println("Введите возраст:") return readLine()?.toInt() }
Порядок объявления функций в файле не важен — программа найдёт нужную функцию в любом случае. Важен порядок вызовов внутри main().
Функция может принимать значения извне для их обработки. Параметры перечисляются в круглых скобках через запятую в формате имя: Тип.
fun printNameAndAge(name: String?, age: Int?) { println("Данные пользователя: $name, $age лет") }
Вызов с передачей аргументов:
fun main() { val name = getName() val age = getAge() printNameAndAge(name, age) }
Имена переменных в месте вызова и в сигнатуре функции могут отличаться. Главное — соблюдать типизацию и порядок аргументов.
Для повышения читабельности можно явно указывать имена аргументов при вызове функции. В этом случае порядок их перечисления не важен.
fun main() { val name = getName() val age = getAge() printNameAndAge(userName = name, userAge = age) } fun printNameAndAge(userName: String?, userAge: Int?) { println("Данные пользователя: $userName, $userAge лет") }
Промежуточные переменные можно убрать, передавая вызовы функций напрямую как аргументы:
fun main() { printNameAndAge(userName = getName(), userAge = getAge()) }
=Если функция возвращает значение, фигурные скобки и return можно заменить знаком =. Тип возвращаемого значения при этом определяется автоматически.
fun getName() = readLine() fun getAge() = readLine()?.toInt()
Через
=функция возвращает результат выражения справа. Вызовprintln()в такой записи недопустим, так какprintln()возвращает типUnit(аналог «ничего»), а не нужный тип данных.
Итоговый вариант программы:
fun main() { printNameAndAge(userAge = getAge(), userName = getName()) } fun getName() = readLine() fun getAge() = readLine()?.toInt() fun printNameAndAge(userName: String?, userAge: Int?) { println("Данные пользователя: $userName, $userAge лет") }
println()println() — это обычная функция стандартной библиотеки Kotlin, принимающая один параметр и выводящая его в консоль. Её тело объявлено внутри класса Console и основано на System.out.println() из библиотеки Java.