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 умовні конструкції


Умовні конструкції дозволяють направити виконання програми по одній із колій в залежності від умови.


if...else

Конструкція if приймає умова, і якщо ця умова істинно, то виконується наступний блок інструкцій.

val a = 10
if(a == 10) {
 
    println("a равно 10")
}

В даному випадку в конструкції if перевіряється істинність виразу a == 10 , якщо воно істинне, то виконується наступний блок коду в фігурних дужках, і на консоль виводиться повідомлення "a дорівнює 10". Якщо ж вираз помилково, тоді блок коду не виконується.

Якщо необхідно задати альтернативний варіант, то можна додати блок else :

val a = 10
if(a == 10) {
    println("a равно 10")
}
else{
    println("a НЕ равно 10")
}

Таким чином, якщо умовний вираз після оператора if істинно, то виконується блок після if, якщо брехливо - виконується блок після else.

Якщо блок коду складається з одного виразу, то в принципі фігурні дужки можна опустити:

val a = 10
if(a == 10)
    println("a равно 10")
else
    println("a НЕ равно 10")

Якщо необхідно перевірити кілька альтернативних варіантів, то можна додати вирази else if :

val a = 10
if(a == 10) {
    println("a равно 10")
}
else if(a == 9){
    println("a равно 9")
}
else if(a == 8){
    println("a равно 8")
}
else{
    println("a имеет неопределенное значение")
}

Варто відзначити, що конструкція if може повертати значення. Наприклад, знайдемо максимальне з двох чисел:

val a = 10
val b = 20
val c = if (a > b) a else b
 
println(c)  // 20

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

val a = 10
val b = 20
val c = if (a > b){
    println("a = $a")
    a
} else {
    println("b = $b")
    b
}

В кінці кожного блоку вказується значення, що повертається.


конструкція when

Конструкція when перевіряє значення деякого об'єкта і в залежності від його значення виконує той чи інший код. Конструкція when аналогічна конструкції switch в інших мовах.

val a = 10
when(a){
    10 -> println("a = 10")
    20 -> println("a = 20")
    else -> println("неопределенное значение")
}

Після ключового слова when в дужках йде вираз. Потім йде блок коду, в якому визначаються значення для порівняння. Після кожного значення після стрілки -> йде послідовність виконуваних інструкцій:

10 -> println("a = 10")

Тобто в даному випадку якщо змінна a дорівнює 10, то на консоль буде виводитися повідомлення "a = 10".

Якщо жодне із значень в блоці when не відповідають висловом, то виконуються інструкції з виразу else. Вираз else не обов'язкова, його можна не визначати.

Якщо треба, щоб при збігу значень виконувалося кілька інструкцій, то для кожного значення можна визначити блок коду:

var a = 10
when(a){
    10 -> {
        println("a = 10")
        a *= 2
    }
    20 -> {
        println("a = 20")
        a *= 5
    }
    else -> { println("неопределенное значение")}
}
println(a)

Можна визначити одні і ті ж дії відразу для декількох значень. У цьому випадку значення перераховуються через кому:

val a = 10
when(a){
    10, 20 -> println("a = 10 или a = 20")
    else -> println("неопределенное значение")
}

Також можна порівнювати з цілим діапазоном значень за допомогою оператора in :

val a = 10
when(a){
    in 10..19 -> println("a в диапазоне от 10 до 19")
    in 20..29 -> println("a в диапазоне от 20 до 29")
    !in 10..20 -> println("a вне диапазона от 10 до 20")
    else -> println("неопределенное значение")
}

Якщо оператор in дозволяє дізнатися, чи є значення в певному діапазоні, то зв'язка операторів ! In дозволяє перевірити відсутність значення в певній послідовності.


повернення значення

Як і if конструкція when може повертати значення:

val sum = 1000
 
val rate = when(sum){
    in 100..999 -> 10
    in 1000..9999 -> 15
    else -> 20
}
println(rate)       // 15

Таким чином, якщо значення змінної sum розташовується в певному діапазоні, то повертається то значення, яке йде після стрілки.


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