English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Основной курс Kotlin

Контроль потока в Kotlin

Функции в Kotlin

Строки в Kotlin

面向对象(OOP) в Kotlin

Функции в Kotlin

В этой статье вы узнаете о функции. Что такое функция, её синтаксис и как создавать пользовательские функции в Kotlin.

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

Функции используются для разбиения больших программ на более мелкие модульные блоки. Например, вам нужно создать окружность на основе ввода пользователя и покрасить ее. Вы можете создать две функции для решения этой проблемы:

  • Функция createCircle() - используется для создания окружности

  • Функция colorCircle() - используется для заполнения цвета

Разделение сложных программ на более мелкие компоненты делает наши программы более структурированными и удобными для управления.

Кроме того, это предотвращает повторение и делает код более повторно используемым.

Тип функции

Существует два типа функций в зависимости от того, является ли это пользовательская функция или функция из стандартной библиотеки:

  • Стандартные библиотечные функции Kotlin

  • Пользовательские функции

Стандартные библиотечные функции Kotlin

Стандартные библиотечные функции - это内置 функции Kotlin, которые можно использовать в любое время. Например,

  • print() - это библиотечная функция, которая может выводить сообщения в стандартный поток вывода (монитор).

  • sqrt() возвращает квадратный корень из числа (значение Double)

fun main(args: Array<String>) {
    var number = 5.5
    print("Result = ${Math.sqrt(number)}")
}

При запуске этой программы, вывод будет следующим:

Result = 2.345207879911715

ЭтоСтандартная библиотека Kotlinссылки, чтобы вы могли их просмотреть.

Пользовательские функции

Как уже упоминалось, вы можете создать свои собственные функции. Эти функции называются пользовательскими функциями.

Как создать пользовательскую функцию в 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"

Эта статья является кратким введением в функции в Kotlin.