Управляющие конструкции или операторы управления на языке Kotlin (Котлин) несколько отличаются от тех, которые используются в таких языках программирования как Java, С++ и другие. Прежде всего, операторы Котлина значительно богаче по функционалу, ситуации, когда сложные условия в Kotlin записываются буквально в одну строку - обычное дело.
Назначение оператора, аналогично другим языкам программирования - это оператор ветвления. В зависимости от результата выражения, будет вызван один или другой блок кода. Например:
var value1: Int = 5
var value2: Int = 10
if (value1 > value2) {
// если value1 будет больше чем value2, то выполнится эта часть кода
} else {
// иначе сработает блок else
}
var value1: Int = 5
var value2: Int = 10
// сокращенный вариант, если блок else не нужен и у нас всего одна строка кода
if (value1 > value2) println("value1 больше value2")
// однако правилами хорошего тона, будет запись с фигурными скобками, даже если они не нужны
if (value1 > value2) {
println("value1 больше value2")
}
}
Интересной особенностью является то, что в блоках if-else можно вернуть какое-либо значение и сразу его присвоить переменной. Например вот так:
var result = if (value1 > value2) {
print("Сработал if")
100
} else {
print("Сработал else")
200
}
То есть, в данном случае сработает блок else, и переменной result пристроится значение = 200. Писать слово return тут не нужно.
Оператор when появился в Kotlin, как замена оператору switch, который хорошо известен и используется практически во всех языках программирования. Это оператор выбора. Он позволяет проверить выражение на множество совпадений и выполнить соответствующий блок кода. Оператор похож на if-else, но позволяет сделать запись более понятной и короткой, в случаях, когда необходимо выполнить множество проверок.
var value = 5
when (value) {
1 -> {
print("value == 1")
}
2 -> {
print("value == 2")
}
5 -> {
print("value == 5")
}
else -> { // если никакое значение не совпало
print("else")
}
}
А можно задать диапазон чисел, что-бы проверить, входит ли заданное значение в данный промежуток:
var value = 5
when (value) {
1, 2 -> {
print("value == 1 или value == 2")
}
in 5..10 -> {
print("значение value от 5 до 10")
}
!in 11..12 -> {
print("значение value не входит в промежуток 5 до 10")
}
15 -> {
print("value == 15")
}
else -> { // если никакое значение не совпало
print("else")
}
}
Оператор очень гибкий с широкими возможностями. Так же как и if-else, можно вернуть значение и сразу его присвоить переменной:
var value = 5
var result = when (value) {
1 -> {
print("value == 1")
100
}
in 5-> {
print("value == 5")
500
}
else -> { // если никакое значение не совпало
print("else")
700
}
}
В данном случае, переменной result будет присвоено значение 500.
В видео, я на практике показываю, как работать с переменными, а также наглядно показываю операторы управления. Настоятельно рекомендую посмотреть (длительность 22 мин.). В описании к видео есть содержание с таймкодами, можно перейти сразу на интересующий вас раздел.
Обновлено 17 марта 2021
Теги: