Найти тему
Voyti v it

Условные конструкции языка Kotlin. продолжение.

Оглавление

Начало темы можно увидеть в предидущей статье (кому интересно). Там я пытался понять, что за зверь такой - "условные конструкции" и как ими начать пользоваться. Сегодня будет продолжение этой темы. ИТак.

Логические операторы

С помощью логических операторов можно научить программу проверять еще большее количество условий, независимо от их сложности. При этом

код программы будет выглядеть компактно. Как это работает: (рассматривать будем на примере игры из учебника). Если игрок обладает определенными достоинствами, то вокруг него будет светиться определенными светом аура. Код видим на снимке.

Код наличия ауры игрока с указанием её цвета
Код наличия ауры игрока с указанием её цвета

Разбираем код и роль логических операторов. Для начала увидим, как выглядят эти самые операторы:

&& - оператор логического "И" ("and");

|| - оператор логического "ИЛИ" ("or");

! - оператор логического "НЕ"(правда, здесь его нет);

Теперь переведем на русский, что написано в коде:

if (isBlessed && healthPoints > 50 || isImmortal) { // Если есть благословение и очков здоровья больше 50 или игрок бессмертен.

println("GREEN") //у игрока аура зеленого цвета

} else {

println("NONE") //Иначе ауры нет

Как видим, логические операторы позволяют сразу указывать конкретные параметры, которыми должен обладать игрок, чтобы у него была аура.

Да, чуть не забыл. В коде присутствует дополнительное условие - isImmortal (бессмеhтие). Поэтому, чтобы программа сработала, нужно в её тело добавить переменную. Выглядеть она будет так:

val isImmortal = false.

Блин, прочитав учебник чуть дальше, увидел более оптимизированное решение по наличию у игрока ауры и её цвета. Но для этого нужно ввести еще 2 переменные. Выглядеть будет так:

1. Добавляем в программу переменные :

val auraVisible = isBlessed && healthPoints > 50 || isImmortal // вместо присвоенного значения указываем сразу условное выражение isBlessed && healthPoints > 50 || isImmortal.

И добавляем еще одну переменную:

val auraColor = if (auraVisible) "GREEN" else "NONE" // здесь вместо значения указываем сразу имя переменной и условие, что если аура видна, то она зеленого цвета, иначе - ауры нет.

println(auraColor)

Как это выглядит в коде:

.......

val auraVisible = isBlessed && healthPoints > 50 || isImmortal

val auraColor = if (auraVisible) "GREEN" else "NONE"

println(auraColor)

........

Интервалы

Kotlin предусматривает интервалы для представления линейного набора значений. (Слишком умно написано) попробуем расшифровать.

Итак. Есть оператор, который обозначается так: .. (многоточие). Например 1..6 Интервал включает в себя все значения от 1 до 6 (включая 1 и 6): а именно: 1,2,3,4,5,6. Также интервал может применяться, чтобы не указывать всю последовательность символов. Для проверки попадания нужного нам числа в интервал, нужно применять ключевое слово in (внутри).

Как это работает на примере нашей игровой программы.

Было:

else if (healthPoints >=90) {
" есть несколько царапин."

}

стало : else if (healthPoints in 90..99) {
" есть несколько царапин."

}

Кроме оператора .. существуют еще функции создания интервала.

downTo - создает убывающий интервал.

until - создает интервал, не включающий верхнюю границу выбранного диапазона.

Условное выражение when

В отличие от оператора if/else оператор when делает код более компактным. Для упрощения кода, программистам предлагается использовать выражение when, если оператор if/else содержит ветви else/if.

Давайте сравним:

Было:

Код, отражающий состояние игрока (было)
Код, отражающий состояние игрока (было)

Стало:

Оптимизированный Код, отражающий состояние игрока (стало)
Оптимизированный Код, отражающий состояние игрока (стало)

Как видим, букв стало меньше, а результат не изменился.

На этом пока закончу. Продолжение последует.