Начало темы можно увидеть в предидущей статье (кому интересно). Там я пытался понять, что за зверь такой - "условные конструкции" и как ими начать пользоваться. Сегодня будет продолжение этой темы. ИТак.
Логические операторы
С помощью логических операторов можно научить программу проверять еще большее количество условий, независимо от их сложности. При этом
код программы будет выглядеть компактно. Как это работает: (рассматривать будем на примере игры из учебника). Если игрок обладает определенными достоинствами, то вокруг него будет светиться определенными светом аура. Код видим на снимке.
Разбираем код и роль логических операторов. Для начала увидим, как выглядят эти самые операторы:
&& - оператор логического "И" ("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.
Давайте сравним:
Было:
Стало:
Как видим, букв стало меньше, а результат не изменился.
На этом пока закончу. Продолжение последует.