Главная страница » Ruby » 7. Условные конструкции (альтернативные варианты)
В Ruby существует несколько способов выполнения кода в зависимости от условий. В этом уроке мы рассмотрим альтернативные варианты условных конструкций, включая тернарный оператор, модификаторы условных операторов, и конструкцию case
с диапазонами. Эти альтернативные конструкции помогут сделать код более компактным и читаемым.
Тернарный оператор ? :
— это краткий способ записи условных выражений. Он позволяет уместить условную логику в одной строке, что делает код более лаконичным.
Синтаксис:
condition ? true_value : false_value
Пример использования тернарного оператора:
age = 18
message = age >= 18 ? "Вы совершеннолетний." : "Вы несовершеннолетний."
puts message
Здесь переменная message
получает значение в зависимости от условия age >= 18
.
В Ruby можно использовать условные операторы как модификаторы. Это позволяет записать условные выражения в более компактной форме, если у вас один оператор или выражение в блоке.
Пример использования if
как модификатора:
age = 18
puts "Вы совершеннолетний." if age >= 18
Пример использования unless
как модификатора:
age = 16
puts "Вы несовершеннолетний." unless age >= 18
Здесь код выполняется, если условие истинно (if
) или ложно (unless
).
case
с диапазонамиКонструкция case
в Ruby поддерживает использование диапазонов для проверки значений. Это удобно для работы с интервалами и позволяет избежать множества when
условий.
Пример использования case
с диапазонами:
temperature = 22
case temperature
when 30..Float::INFINITY
puts "Очень жарко."
when 20..29
puts "Тепло."
when 0..19
puts "Холодно."
else
puts "Температура вне допустимого диапазона."
end
Здесь используются диапазоны для определения диапазона температур и вывода соответствующих сообщений.
case
с объектами и типами данныхВы можете использовать конструкцию case
для проверки типа объекта или значения переменной. Это полезно для выполнения различных действий в зависимости от типа данных.
Пример использования case
с типами данных:
value = 42
case value
when Integer
puts "Это целое число."
when String
puts "Это строка."
when Array
puts "Это массив."
else
puts "Неизвестный тип."
end
Здесь case
проверяет тип объекта value
и выполняет соответствующий блок кода.
Тернарный оператор может быть неправильно использован, если условия становятся слишком сложными или если он используется для выполнения сложных действий.
Пример ошибки:
age = 18
# Неправильное использование тернарного оператора
message = age >= 18 ? puts("Вы совершеннолетний.") : puts("Вы несовершеннолетний.") # Ошибка
Здесь puts
не возвращает значение, которое можно использовать для присвоения переменной message
.
case
Ошибки могут возникнуть, если диапазоны не охватывают все возможные значения или если они неправильно определены.
Пример ошибки:
temperature = 22
case temperature
when 30..40
puts "Очень жарко."
when 20..30
puts "Тепло."
else
puts "Температура слишком низкая."
end
Здесь диапазон 20..30
перекрывается с диапазоном 30..40
, и значение 30 попадает в оба диапазона.
Альтернативные варианты условных конструкций в Ruby предоставляют гибкие способы для управления выполнением кода. Использование тернарного оператора, модификаторов условных операторов, и конструкций case
с диапазонами позволяет писать более компактный и читаемый код. Важно правильно использовать эти конструкции для избежания ошибок и повышения эффективности кода.
Напишите метод temperature_advice
, который принимает температуру и возвращает рекомендацию о том, как одеваться. Используйте конструкцию case
с диапазонами:
Напишите метод discount_message
, который принимает количество покупок и возвращает сообщение с применением скидки. Используйте тернарный оператор:
Пример решения:
def temperature_advice(temperature)
case temperature
when 30..Float::INFINITY
"Очень жарко."
when 20..29
"Тепло."
else
"Холодно."
end
end
def discount_message(purchases)
purchases > 10 ? "Вы получаете 20% скидку!" : "Без скидки."
end
# Примеры вызова методов
puts temperature_advice(25) # => "Тепло."
puts discount_message(12) # => "Вы получаете 20% скидку!"
Проверьте свою программу, чтобы убедиться, что она правильно выполняет все операции и обрабатывает возможные ошибки.
Наша цель и главная задача сделать качественное образование в вашем браузере
Телефон: +375 33 910-08-92
Email: info@codefor.tech
Адрес: г. Барановичи, ул. Пирогова, д. 7
© 2024 Все права защищены. CodeFor.