Оператор Unless
Часть раздела Основы путешествия по Ruby на Coddy — урок 25 из 88.
Ruby предлагает уникальный способ выражения условий, когда вы хотите выполнить код только в том случае, если что-то не является истинным. Оператор unless, по сути, является противоположностью if.
С if код выполняется, когда условие истинно. С unless код выполняется, когда условие ложно:
logged_in = false
unless logged_in
puts "Please log in to continue"
endЭто эквивалентно записи if !logged_in, но unless часто читается более естественно. Воспринимайте это как «делай это, если только это условие не истинно».
Вы также можете использовать unless с else:
age = 20
unless age < 18
puts "Access granted"
else
puts "Access denied"
endТем не менее, когда вам нужен блок else, использование if обычно понятнее. Инструкция unless лучше всего подходит, когда у вас есть простое отрицательное условие без альтернативного пути. Выбирайте тот вариант, который делает ваш код более читаемым с первого взгляда.
Задание
ЛегкоВам предоставлены следующие переменные:
has_ticket = false
is_vip = true
items_in_cart = 0
battery_level = 15
is_charging = falseИспользуйте операторы unless для оценки каждого сценария ниже. Выводите указанное сообщение только тогда, когда условие ложно (именно в этом случае unless выполняет свой блок).
- Если не (
unless)has_ticketимеет значениеtrue, выведитеPlease purchase a ticket - Если не (
unless)is_vipимеет значениеtrue, выведитеVIP access required - Если не (
unless)items_in_cartбольше0, выведитеYour cart is empty - Если не (
unless)battery_levelбольше20, выведитеLow battery warning - Если не (
unless)is_chargingимеет значениеtrueилиbattery_levelбольше50, выведитеPlease charge your device
Каждое сообщение должно выводиться на отдельной строке. Выводите сообщения только для тех условий, которые активируют блок unless.
Шпаргалка
Оператор unless выполняет код, когда условие ложно (false), что делает его противоположностью if:
logged_in = false
unless logged_in
puts "Please log in to continue"
endЭто эквивалентно if !logged_in, но часто читается более естественно.
Вы можете использовать unless вместе с else:
age = 20
unless age < 18
puts "Access granted"
else
puts "Access denied"
endТем не менее, unless лучше всего использовать для простых отрицательных условий без блока else. Когда вам нужен альтернативный путь, if обычно понятнее.
Попробуйте сами
# Переменные уже определены за вас
has_ticket = false
is_vip = true
items_in_cart = 0
battery_level = 15
is_charging = false
# TODO: Напишите свой код ниже
# Используйте операторы unless, чтобы проверить каждое условие и вывести соответствующее сообщениеВ этом уроке есть небольшой тест. Начните урок, чтобы ответить на вопросы и сохранить прогресс.
Все уроки раздела Основы
4Операторы. Часть 2
Логические операторы. Часть 1Логические операторы. Часть 2Повторение — простая логикаЛогические операторы. Часть 3Логические операторы. Часть 47Калькулятор разделения счета
Приветственное сообщениеПолучение пользовательского ввода13Продвинутая работа с массивами
Срезы массивов через диапазоныСрезы массивов через индексыОператоры массивовМетод include?2Переменные и типы данных
Числа и переменныеСтроковый тип данныхЛогический тип данныхТип данных SymbolПроверка типов данныхПравила именованияПовторение: создание переменных5Принятие решений
Оператор IfКонструкция If - ElseПовторение — Простой калькуляторВложенные конструкции If - ElseОператор Unless8Циклы
Цикл For с диапазонамиЦикл WhileОператор BreakОператор NextПовторение: ФакториалЦикл TimesЦикл UntilВложенные циклыПовторение: Динамический ввод3Операторы. Часть 1
Арифметические операторыОператор остатка от деленияСокращенная арифметикаИтоги: простая математикаОператоры сравнения6Основы ввода-вывода
Вывод с помощью putsВывод с помощью print и pВывод с переменнымиВвод с помощью getsМетод chompПреобразование типовИтоги — Калькулятор возрастаИтоги — Истина или ложь