Функции — конструктивные блоки любого языка программирования, включая Kotlin. Они помогают сделать код упорядоченным, многократно используемым и чистым. Простые примеры из этой статьи помогут освоить различные типы функций, используемых в Kotlin.

Функции верхнего уровня

Представьте себе ящик с инструментами. Функции верхнего уровня — это инструменты, доступные в любое время и пригодные для любого места в коде. Они определяются вне какого-либо класса и могут использоваться по всей программе.

//Добавление функции
fun add(a: Int, b: Int): Int {
return a + b
}


//Вызов функции верхнего уровня
val result = add(3, 5)

Функции-члены

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

//Создание класса Calculator
class Calculator {
//Функция
fun add(a: Int, b: Int): Int {
return a + b
}
}

//Создание экземпляра класса
val calculator = Calculator()

//Вызов функции
val result = calculator.add(3, 5) // Calling a member functionExtension Functions:

Функции расширения

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

//Функция расширения
fun String.shout() {
return this.toUpperCase() + "!!!"
}


//Основная функция
fun main() {
val message = "hello world"
val shoutedMessage = message.shout()
println(shoutedMessage) // выводит HELLO WORLD!!!
}

Функции высшего порядка

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

//Функция высшего порядка
fun operateOnNumbers(a: Int, b: Int, operation: (Int, Int) -> Int): Int {
return operation(a, b)
}

//Сложение
val addition = operateOnNumbers(3, 5) { x, y -> x + y }

//Умножение
val multiplication = operateOnNumbers(3, 5) { x, y -> x * y }

Лямбда-функции

Это небольшие анонимные функции, используемые по ходу дела, как мини-инструменты, которые создаются для решения конкретных задач. Зачастую их можно применять вместе с функциями высшего порядка.

//Основная функция
fun main() {
val doubled = { num: Int -> num * 2 } // Лямбда-функция для удвоения числа
val result = doubled(5)
println(result) // prints 10
}

Инфиксные функции

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

//Инфиксная функция
infix fun Int.plusOne(): Int {
return this + 1
}


//Вызов инфиксной функции
val result = 3 plusOne 1 // Использование инфиксной функции

Встраиваемые функции

Эти функции похожи на суперэффективные инструменты, которые “встраиваются” в код, где используются, сокращая накладные расходы. Применяйте их осторожно для небольших, часто вызываемых функций.

//Встраиваемая функция
inline fun logMessage(message: String) {
  println(message)
}


//Основная функция
fun main() {
  logMessage("This is a log message")
}

Это лишь часть многочисленных функций, доступных в Kotlin. Эффективно используя их, вы будете писать более чистый и удобный код!

Читайте также:

Читайте нас в Telegram, VK и Дзен


Перевод статьи Mukesh Rajput: Function Fun! Mastering the Power of Kotlin Functions

Предыдущая статья10 рекомендаций по повышению производительности от экспертов JS React
Следующая статьяКак написать оператор Kubernetes?