В Kotlin для задання умови подальшого виконання коду використовуються конструкції if/if-else та when Конструкція if Конструкція if пишеться так: var x=5; if (x==5) { //якщо x дорівнює 5 println ("співпало") //виводимо слово "співпало"
Якщо після умови йде лише одна інструкція, то фігурні дужки можна опустити.
Зверніть увагу, що перевірка умови на рівність іде з подвійним дорівнює, тобто з оператором ==, а не одним. Одне дорівнює означає присвоєння.
Також можна додавати інструкцію else і створювати складні перевірки умови:
if (x>0) { println ("додатнє число") } else if (x<0) { println ("від'ємне число") } else println ("ні додатнє, ні від'ємне (0)")
В Kotlin if можна використовувати для повернення значення. println (if (x>0) "додатнє число" else if (x<0) "від'ємне число" else "ні додатнє, ні від'ємне (0)") в даному випадку кожна секція конструкції if повертає текстовий рядок, який виводиться інструкцією println.
Конструкція when Конструкція when виконує функцію конструкції switch в інших мовах. when (x) { 1 -> print("x == 1") 2 -> print("x == 2") else -> print("x ні 1 ні 2")
Тут x перевіряється на кілька значень і when вжито як інструкцію(англ. expression). Можна використати цю конструкцію і як вираз (англ. statement): var x=2 val text = when (x) { 1 -> "x == 1" 2 -> "x == 2" else -> "x ні 1 ні 2"
print(text) При використанні when як інструкції всі можливі випадки x можна не покривати і можна опустити else. Але якщо використовувати when як вираз, то треба покрити всі можливі значення. Інакше компілятор викине помилку.
Можна не використовувати суб'єкта when: var a=2 var b=3 val message = when { a > b -> "a is greater than b" a < b -> "a is less than b" else -> "a is equal to b"
print(message)
Можна в одному рядочку перевіряти умову на кілька значень: when (x) { 0, 1 -> print("x == 0 or x == 1") else -> print("інший випадок") } Також можна використовувати вирази в гілці умови: when (x) { s.toInt() -> print("s encodes x") else -> print("s does not encode x") }
Можна перевіряти на входження в ряд значень: when (x) { in 1..10 -> print("x is in the range") in validNumbers -> print("x is valid") !in 10..20 -> print("x is outside the range") else -> print("none of the above") }
Можна перевіряти на приналежність до певного типу: fun hasPrefix(x: Any) = when(x) { is String -> x.startsWith("prefix") else -> false }
Можна також перевіряти на true/false значення, перевіряти на приналежність до певного об'єкту. Детальніше: Конструкція when (англ)
Якщо обробка певного випадку потребує більше ніж один рядок, то потрібно використовувати фігурні дужки: var a:Int=5
when(a){ 1-> println ("1") 5-> {print("a equal ") println("5")