Условные выражения в Swift: разбираемся с if, else if, else

В Swift мы используем условные операторы if, else if и else для логических операций. Это называется управления потоком, потому что мы управляем нашим кодом. В этой статье вы узнаете, как использовать if-операторы в программировании на Swift.

Оператор if

Условные выражения с оператором if используются для принятие решений в вашем коде:

если условие верно, сделай это

К примеру:

  • Если пользователь успешно залогинен, мы загружаем его твиты.
  • Если твит содержит фотографию, мы используем особый интерфейс для ее отображения.
  • Если твит содержит определенные слова, мы генерируем хэштеги.

Принятие подобных решений называется управлением потока кода, потому что мы разделяем поток кода на отдельные ветви.

управление потоком

Представьте, что вы создали много подобных условий, как на примере выше, и теперь поток вашего кода быстро разветвляется во многих направлениях.

Давайте посмотрим на синтаксис Swift для условных выражений:

if password == "qwerty123" {
    cave.open()
    treasure.steal()
}

В выражении используется логика для определения, равна ли строка password == “qwerty123”. Когда это выражение оценивается как true, выполняется код между фигурными скобками {}. Фигурные скобки используются в программировании для структурирования блоков кода.

Булевая логика

Логические выражения используют булевую логику для возврата либо true, либо false. В Swift данный тип обозначается как Bool.

let isLoggedIn: Bool = false
 
if isLoggedIn {
    print("Секретное сообщение")
}

Если isLoggedIn имеет значение false, условное выражение не выполняется. Если isLoggedIn имеет значение true, то условный блок кода будет выполнен, и на консоль будет выведено “Секретное сообщение”.

Оператор if оценивает значение isLoggedIn и действует соответственно. Когда значение равно true, выполняется условное тело оператора. Когда значение равно false, условное тело не выполняется.

Вы также можете использовать условные выражения для проверки данных. Представьте себе следующий сценарий:

  • Ваш пользовательский интерфейс имеет две кнопки: loginButton и signupButton.
  • Вы используете одну функцию для нажатия на обе кнопки, которая называется ButtonTapped(button:).
  • Внутри функции вы сравниваете параметр button с loginButton или с signupButton.
if button == loginButton {
    // 
} else if button == signupButton {
    // 
}

Теперь вы знаете, какая кнопка была нажата, и можете действовать соответственно.

Операторы сравнения

Выражение

if isLoggedIn {
    print("Секретное сообщение")
}

проверяет, равно ли значение isLoggedIn true. Этот код также можно написать следующим образом:

if isLoggedIn == true {
    // 
}

== – это оператор сравнения, который мы используем, чтобы проверить, равны ли два значения.

Swift имеет следующие операторы сравнения:

  • Равно: a == b
  • Не равно: a != b
  • Больше, чем: a > b
  • Меньше, чем: a < b
  • Больше или равно: a >= b
  • Меньше или равно: a <= b

Мы используем операторы сравнения для сравнений значений друг с другом.

let room = 101
 
if room >= 100 {
    print("Эта комната находится на первом этаже")
}

Когда вы сравниваете два значения, оба из них должны иметь одинаковый тип. Нет смысла проверять, равна ли строка целому числу. Поэтому приведенный ниже код приведет к ошибке компилятора:

let room: Int = 123
let input: String = "123"
 
if room == input {
    print("Комната недоступна")
}

Вы даже можете сравнивать строки друг с другом. Таким образом, мы можем проверить, меньше ли «abcd», чем «efgh»:

"abcd" < "efgh"
// true

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

Также нам доступны логические операторы: И, ИЛИ и НЕ.

var isPresident = true
var threatLevel = 7
var officerRank = 3
 
if (threatLevel > 5 && officerRank >= 3) || isPresident {
    print("Запустить ракеты!")
}

В приведенном выше примере вы можете запустить ракеты, если:

  • isPresident является true
  • threatLevel больше, чем 5 и officerRank больше или равно 3.

Мы можем использовать логические операторы для создания комбинации логических выражений.

Есть 3 логических оператора:

  • И обозначается как &&
  • ИЛИ обозначается как ||
  • НЕ обозначается как !

Операторы && и || вы помещаете между двумя значениями, например a && b или a || b. Оператор ! является префиксом, поэтому вы должны поставить его перед одним значением, например !a.

Что такое операнды? В выражении a + b, + – это оператор, a и b являются операндами. Оператор воздействует на операнды.

  • Выражение с оператором И возвращает true, когда оба его операнда имеют значение true. Когда любой из операндов имеет значение false, возвращается false.
  • Выражение с оператором ИЛИ возвращает true, когда один из операндов имеет значение true. Когда оба операнда являются false, возвращается false.
  • Выражение с оператором НЕ возвращает значение, противоположное текущему значению, поэтому true превращается false, а false становится true.

Как использовать If, Else If, Else?

Вы можете объединить несколько условий в одну цепочку:

let color = "синий"
 
if color == "зеленый" {
    print("Я люблю \(color)!")
} else if color == "синий" || color == "голубой" {
    print("Мне нравится \(color)...")
} else {
    print("Мне не нравится \(color)!!!")
}

В приведенном выше примере мы объединенили несколько if-операторов. Сначала мы объявляет константу color типа String и присваиваем ей значение “синий”.

Затем мы проверяем выбранное условие. Когда это условие приводит к положительному результату, выполняется первый блок, а все остальные выражения после него пропускаются. Когда первый блок не выполняется, выражение приводит ко второму результату, и код продолжает оценивать следующие условия. Если ни одно из выражений не возвращет true, выполняется блок кода else.

Рассмотрим еще один пример:

let isLoggedIn = false
 
if isLoggedIn {
    print("Секретное сообщение")
} else {
    print("Доступ запрещен!")
}

В приведенном выше примере выполняется else блок, потому что isLoggedIn имеет значение false.

if name == "Боб" {
    print("Только Боб может пройти.")
} else {
    print("Ты не пройдешь!")
}

В этом примере выполняется else блок для любого значения name, которое не равно “Боб”.

Посмотрим на еще один пример:

var isPresident = true
var threatLevel = 7
var officerRank = 3
 
if threatLevel > 5 && officerRank >= 3 {
    print("Запустить рокеты! (офицер)")
} else if isPresident {
    print("Запустить ракеты! (президент)")
} else {
    print("Нельзя запустить ракеты")
}

Приведенный выше пример имеет тот же результат, что и предыдущие примеры, за исключением того, что его реализация отличается. Вместо того, чтобы запускать ракеты, когда переменные threatLevel, officerRank и isPresident имеют значения true, мы теперь реагируем на отдельные случаи. В результате выполняется только одно из данных условий.

Читайте также:
Добавить комментарий

Ваш адрес email не будет опубликован.