English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
В этой статье вы узнаете о функции. Что такое функция, её синтаксис и как создавать пользовательские функции в Kotlin.
В программировании функция представляет собой набор связанных предложений, выполняющих определенную задачу.
Функции используются для разбиения больших программ на более мелкие модульные блоки. Например, вам нужно создать окружность на основе ввода пользователя и покрасить ее. Вы можете создать две функции для решения этой проблемы:
Функция createCircle() - используется для создания окружности
Функция colorCircle() - используется для заполнения цвета
Разделение сложных программ на более мелкие компоненты делает наши программы более структурированными и удобными для управления.
Кроме того, это предотвращает повторение и делает код более повторно используемым.
Существует два типа функций в зависимости от того, является ли это пользовательская функция или функция из стандартной библиотеки:
Стандартные библиотечные функции Kotlin
Пользовательские функции
Стандартные библиотечные функции - это内置 функции Kotlin, которые можно использовать в любое время. Например,
print() - это библиотечная функция, которая может выводить сообщения в стандартный поток вывода (монитор).
sqrt() возвращает квадратный корень из числа (значение Double)
fun main(args: Array<String>) { var number = 5.5 print("Result = ${Math.sqrt(number)}") }
При запуске этой программы, вывод будет следующим:
Result = 2.345207879911715
ЭтоСтандартная библиотека Kotlinссылки, чтобы вы могли их просмотреть.
Как уже упоминалось, вы можете создать свои собственные функции. Эти функции называются пользовательскими функциями.
Прежде чем использовать (вызывать) функцию, ее необходимо определить.
Способ определения функции в Kotlin следующий:
fun callMe() { // Тело функции }
Чтобы определить функцию в Kotlin, используйте ключевое слово fun. Затем следует имя функции (Идентификатор). В этом случае имя функции callMe.
В приведенном выше примере скобки ( ) пусты. Это означает, что функция не принимает никаких параметров. Вы узнаете о параметрах в следующей части статьи.
Код в фигурных скобках { } составляет тело функции.
Вы должны вызвать эту функцию, чтобы выполнить код в теле функции. Вот как это делается:
callme()
Эта строка вызывает ранее объявленную функцию callMe().
fun callMe() { println("Печать из функции callMe().") println("Это очень круто (еще продолжает печать изнутри).") } fun main(args: Array<String>) { callMe() println("Внешний вывод из функции callMe().") }
При запуске этой программы, вывод будет следующим:
Печать из функции callMe(). Это очень круто (еще продолжает печать изнутри). Внешний вывод из функции callMe().
Функция callMe() в приведенном выше коде не принимает никаких параметров.
Кроме того, эта функция не возвращает никакого значения (тип возвращаемого значения - Unit).
Давайте рассмотрим другой пример функции. Эта функция принимает параметры и возвращает значение.
fun addNumbers(n1: Double, n2: Double): Int { val sum = n1 + n2 val sumInteger = sum.toInt() return sumInteger } fun main(args: Array<String>) { val number1 = 12.2 val number2 = 3.4 val result: Int result = addNumbers(number1, number2) println("result = $result") }
При запуске этой программы, вывод будет следующим:
result = 15
Здесь, в процессе вызова функции передаются два параметра типа Double number1 и number2 функции addNumbers(). Эти параметры называются фактическими параметрами (или реальными параметрами).
result = addNumbers(number1, number2)
Параметры n1 и n2 принимают передаваемые параметры (в определении функции). Эти параметры называются формальными параметрами (или параметрами формы).
В Kotlin параметры разделены запятыми. Также, типы формальных параметров должны быть явно указаны.
Обратите внимание, что типы фактических параметров и формальных параметров должны соответствовать, то есть, тип первого фактического параметра должен соответствовать типу первого формального параметра. Таким же образом, тип второго фактического параметра должен соответствовать типу второго формального параметра и т.д.
Здесь,
return sumInteger
является语句ом return. Этот код завершает функцию addNumbers(), и управление программы переходит в функцию main().
В программе sumInteger поступает из функции addNumbers(). Это значение уже распределено переменной result.
Обратите внимание,
sumInteger и result оба типа Int.
Тип возвращаемого значения функции указывается в определении функции.
//Тип возвращаемого значения Int fun addNumbers(n1: Double, n2: Double): Int { ... .. ... }
Если функция не возвращает никакое значение, то её тип возвращаемого значения Unit. Если тип возвращаемого значения Int, то его можно указать в определении функции.
fun main(args: Array<String>) { println(getName("John", "Doe")) } fun getName(firstName: String, lastName: String): String = "$firstName $lastName"
При запуске этой программы, вывод будет следующим:
John Doe
Здесь функция getName() принимает два параметра типа String и возвращает тип String.
Если функция возвращает единственный выражение (например, как показано в примере выше), то можно пропустить фигурные скобки {} в теле функции и указать的主体 после знака =.
В этом случае, явное объявление типа возвращаемого значения не обязательно, так как тип возвращаемого значения может быть выведен компилятором. В приведенном выше примере вы можете заменить
fun getName(firstName: String, lastName: String): String = "$firstName $lastName"
Эквивалентно:
fun getName(firstName: String, lastName: String) = "$firstName $lastName"