Swift में तुलना ऑपरेटर्स और लॉजिकल ऑपरेटर्स
Что это и зачем?
Представь, что ты играешь в компьютерную игру. Чтобы персонаж прыгнул, нужно нажать пробел. Но что, если он может прыгать только когда стоит на земле? Или когда у него больше 0 жизней? Вот тут и нужны операторы сравнения и логические операторы.
Операторы сравнения — это как весы: они сравнивают два числа или значения и говорят: "Да, это правда" (true) или "Нет, это ложь" (false). Например: "5 больше 3?" — да, правда. "2 равно 10?" — нет, ложь.
Логические операторы — это как командир, который объединяет несколько условий. Например: "Если у игрока есть ключ И дверь открыта, то войти". Или: "Если враг далеко ИЛИ спит, то можно пройти".
Без них программы были бы тупыми — они бы делали одно и то же всегда. А с ними код становится умным: сам решает, что делать в разных ситуациях.
Синтаксис и примеры кода
В Swift операторы сравнения выглядят так:
==— равно (внимание: два знака равно, не один!)!=— не равно>— больше<— меньше>=— больше или равно<=— меньше или равно
Логические операторы:
&&— И (оба условия должны быть true)||— ИЛИ (хотя бы одно true)!— НЕ (переворачивает true в false и наоборот)
Пример 1: Проверка возраста для просмотра фильма
let возраст = 14
let минимальныйВозраст = 12
// Сравниваем: возраст больше или равен минимальному?
if возраст >= минимальныйВозраст {
print("Можно смотреть фильм!")
} else {
print("Извини, ты ещё太小.")
}
// Вывод: Можно смотреть фильм!
Комментарий: Тут мы используем оператор >= (больше или равно). Если бы возраст был 11, условие стало бы ложным, и выполнился бы блок else.
Пример 2: Проверка пароля и имени пользователя
let имя = "Алиса"
let пароль = "12345"
// Используем && (И) — оба условия должны быть true
if имя == "Алиса" && пароль == "12345" {
print("Добро пожаловать, Алиса!")
} else {
print("Неверное имя или пароль")
}
// Вывод: Добро пожаловать, Алиса!
Комментарий: Если бы имя было "Боб", но пароль правильный, условие всё равно бы не сработало — нужно совпадение по обоим пунктам.
Пример 3: Выбор действия в игре
let здоровье = 30
let естьАптечка = true
// Используем || (ИЛИ) — достаточно одного true
if здоровье < 20 || естьАптечка {
print("Нужно лечиться!")
} else {
print("Можно продолжать бой")
}
// Вывод: Нужно лечиться!
Комментарий: Здоровье 30 не меньше 20, но есть аптечка — поэтому условие true. Если бы не было аптечки и здоровье было 25, то условие стало бы false.
Пример 4: Проверка, что число не равно нулю
let число = 7
// Используем != (не равно)
if число != 0 {
print("Число не ноль, можно делить")
} else {
print("Осторожно: деление на ноль!")
}
// Вывод: Число не ноль, можно делить
Комментарий: Оператор != проверяет, что значения разные. Если бы число было 0, условие стало бы false.
Пример 5: Сложное условие с НЕ
let дверьЗакрыта = false
// Используем ! (НЕ) — переворачиваем false в true
if !дверьЗакрыта {
print("Дверь открыта, можно войти")
} else {
print("Дверь закрыта, нужен ключ")
}
// Вывод: Дверь открыта, можно войти
Комментарий: Переменная дверьЗакрыта равна false. Но мы пишем !дверьЗакрыта, что означает "НЕ закрыта" — то есть true. Удобно, когда проще проверить отрицание.
Сравнение с Python
В Python те же операторы работают почти так же, но есть пара отличий:
- Вместо
&&пишетсяand - Вместо
||пишетсяor - Вместо
!пишетсяnot - Операторы сравнения (
==,!=,>и т.д.) — те же самые
Тот же пример на Swift и Python:
// Swift
let возраст = 16
if возраст >= 18 {
print("Взрослый")
} else {
print("Ребёнок")
}
# Python
возраст = 16
if возраст >= 18:
print("Взрослый")
else:
print("Ребёнок")
Комментарий: Видишь? Логика та же, но в Python нет скобок вокруг условия, и двоеточие после if. А ещё в Python не нужны фигурные скобки — важны отступы.
Ещё пример с логическими операторами:
// Swift
if возраст > 12 && возраст < 20 {
print("Ты подросток")
}
# Python
if возраст > 12 and возраст < 20:
print("Ты подросток")
Комментарий: Вместо && — and. Вместо || — or. Вместо ! — not. Запомнить легко: английские слова вместо символов.
Типичные ошибки новичков
Ошибка 1: Путают = и ==
// НЕПРАВИЛЬНО:
if x = 5 { // Ошибка! Один = это присваивание
print("x равен 5")
}
// ПРАВИЛЬНО:
if x == 5 { // Два == это сравнение
print("x равен 5")
}
Объяснение: Один знак равно — это команда "положить значение". Два знака — это вопрос "равны ли?". Swift даже не даст скомпилировать такой код с одним = в if.
Ошибка 2: Забывают про приоритет операторов
// НЕПРАВИЛЬНО:
if возраст > 10 && возраст < 20 || возраст == 30 {
// Сначала выполнится &&, потом || — может быть не то, что ты хочешь
}
// ПРАВИЛЬНО: используй скобки
if (возраст > 10 && возраст < 20) || возраст == 30 {
// Теперь чётко: сначала проверка на диапазон, потом ИЛИ
}
Объяснение: Как в математике: умножение и деление делаются раньше сложения. Тут && выполняется раньше ||. Скобки помогают управлять порядком.
Ошибка 3: Сравнивают разные типы
// НЕПРАВИЛЬНО:
let число = 5
let текст = "5"
if число == текст { // Ошибка! Int и String нельзя сравнивать
print("Равны")
}
// ПРАВИЛЬНО: сначала преобразовать
if число == Int(текст) { // Превращаем текст в число
print("Равны")
}
Объяснение: Swift строгий: нельзя сравнивать яблоки и апельсины. Число 5 и строка "5" — это разные вещи. Нужно явно преобразовать один тип в другой.
Ошибка 4: Пишут if с true впустую
// НЕПРАВИЛЬНО:
if true == true { // Это всегда true, зачем проверять?
print("Бесполезный код")
}
// ПРАВИЛЬНО:
if 5 > 3 { // Реальная проверка
print("Полезный код")
}
Объяснение: Если условие всегда истинно, то if не нужен — код выполнится в любом случае. Используй сравнения, которые могут дать и true, и false.
Ошибка 5: Путают && и ||
// Допустим, нужно проверить, что число от 1 до 10
let число = 15
// НЕПРАВИЛЬНО:
if число > 0 || число < 10 { // Это true для ЛЮБОГО числа > 0!
print("Число в диапазоне")
}
// ПРАВИЛЬНО:
if число > 0 && число < 10 { // Только числа от 1 до 9
print("Число в диапазоне")
}
Объяснение: || (ИЛИ) даёт true, если хотя бы одно условие верно. Для диапазона нужно && (И) — оба условия должны быть верны.
Итог
Операторы сравнения и логические операторы — это основа любого умного кода. Они позволяют программе принимать решения, как человек: "Если это И то, сделай так; ИНАЧЕ сделай иначе".
Запомни главное:
- Сравнение:
==(равно),!=(не равно),>,<,>=,<= - Логика: