Kotlin в IntelliJ IDEA Kotlin змінні Kotlin типи даних Kotlin операції з числами Kotlin умовні вирази Kotlin умовні конструкції Kotlin цикли Kotlin послідовності Kotlin масиви Kotlin функціональне програмування Kotlin змінна кількість параметрів. Vararg Kotlin повернення результату. оператор return Kotlin однорядкові і локальні функції Kotlin перевантаження функцій Kotlin Лямбда-вирази Kotlin функції вищого порядку Kotlin Анонімні функції Kotlin ООП Класи і об'єкти Kotlin ООП властивості Kotlin ООП конструктор Kotlin ООП функції в класах Kotlin ООП Пакети та імпорт Kotlin ООП модифікатори видимості Kotlin ООП вкладені класи Kotlin ООП інтерфейси Kotlin ООП спадкування Kotlin ООП Перевизначення методів і властивостей Kotlin ООП Абстрактні класи та методи Kotlin ООП Data-класи Kotlin ООП перерахування enums Kotlin ООП Null і nullable-типи Kotlin ООП Обробка винятків Kotlin ООП перетворення типів Kotlin ООП Інфіксна функція Kotlin ООП функції розширення Kotlin ООП Узагальнені класи і функції Kotlin ООП обмеження узагальнень Kotlin ООП Варіантність, коваріантність і контраваріантність Kotlin Колекції. Змінювані і незмінні колекції Kotlin Колекції. LIST список Kotlin Колекції. Set Kotlin Колекції. Map

Kotlin однорядкові і локальні функції


однорядкові функції

Однорядкові функції (single expression function) використовують скорочений синтаксис визначення функції у вигляді одного виразу. Ця форма дозволяє опустити повертається тип і оператор return.

fun имя_функции (параметры_функции) = тело_функции

Функція також визначається за допомогою ключового слова fun , після якого йде ім'я функції і список параметрів. Але після списку параметрів не вказується повертається тип. Повертається тип буде виводиться компілятором. Далі через оператор присвоєння = визначається тіло функції у вигляді одного виразу.

Наприклад, функція зведення числа в квадрат:

fun double(x: Int) = x * x
 
fun main(args: Array<String>) {
 
    val a = double(5)   // 25
    val b = double(6)   // 36
    println("a=$a  b=$b")
}

В даному випадку функція double зводить число в квадрат. Вона складається з одного виразу x * x . Значення цього виразу і буде повертатися функцією. При цьому оператор return не використовується.

Такі функції більш лаконічні, більш читабельні, але також опціонально можна і вказувати повертається тип явно:

fun double(x: Int) : Int = x * x

локальні функції

Одні функції можуть бути визначені всередині інших функцій. Внутрішні або вкладені функції ще називають локальними.

Локальні функції можуть визначати дії, які використовуються тільки в рамках якоїсь конкретної функції і ніде більше не застосовуються.

Наприклад, функція приймає на вхід підставу і висоту двох трикутників і повинна обчислити, більше чи площа першого трикутника, ніж другого:

fun isFirstGreater(base1: Double, height1: Double, base2: Double, height2: Double): Boolean{
 
    fun square(base: Double, height: Double) = base * height / 2
     
    return square(base1, height1) > square(base2, height2)
}
 
fun main(args: Array<String>) {
 
    val a = isFirstGreater(10.0, 10.0, 20.0, 20.0)
    val b = isFirstGreater(20.0, 20.0, 10.0, 10.0)
    println("a=$a  b=$b")
}

Для проміжних обчислень - обчислення площі кожного окремого трикутника в функції isFirstGreater визначена допоміжна функція square. Більше в програмі ця функція ніде не використовується, тому її можна зробити локальної.

При цьому локальна може використовуватися тільки в тій функції, де вона визначена.


Наш партнер:
beta test mp3 playlist downloader