Menu
Coddy logo textTech

Оператор 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 лучше всего подходит, когда у вас есть простое отрицательное условие без альтернативного пути. Выбирайте тот вариант, который делает ваш код более читаемым с первого взгляда.

challenge icon

Задание

Легко

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

has_ticket = false
is_vip = true
items_in_cart = 0
battery_level = 15
is_charging = false

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

  1. Если не (unless) has_ticket имеет значение true, выведите Please purchase a ticket
  2. Если не (unless) is_vip имеет значение true, выведите VIP access required
  3. Если не (unless) items_in_cart больше 0, выведите Your cart is empty
  4. Если не (unless) battery_level больше 20, выведите Low battery warning
  5. Если не (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, чтобы проверить каждое условие и вывести соответствующее сообщение
quiz iconПроверьте себя

В этом уроке есть небольшой тест. Начните урок, чтобы ответить на вопросы и сохранить прогресс.

Все уроки раздела Основы