Главная страница » 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-2025 Все права защищены. CodeFor.
Язык сайта: