Курси програмного забезпечення | Цифровий кампус
Уроки програмного забезпечення та приклади проектів => Ruby => Тема розпочата: Ayseg від Квт. 26, 2025, 11:36 AM
У мові програмування Ruby конструкція case/when/end є потужним і зручним інструментом для умовного керування потоком програми. Вона дозволяє порівнювати значення змінної з кількома умовами та виконувати відповідний блок коду. У цій статті ми детально розглянемо, як працює case/when/end, надамо приклади використання та відповімо на поширені запитання в розділі FAQS.Що таке case/when/end у Ruby?Конструкція case/when/end у Ruby є альтернативою множинним умовним операторам if/elsif/else. Вона використовується для перевірки значення змінної (або виразу) проти набору умов і виконання відповідного коду. Це робить код більш читабельним і компактним, особливо коли потрібно порівняти одне значення з кількома можливими варіантами.Синтаксис виглядає так:case вираз
when значення1
# Код для виконання, якщо вираз == значення1
when значення2
# Код для виконання, якщо вираз == значення2
else
# Код для виконання, якщо жодна умова не виконана
end
Як працює case/when/end?- Вираз: case оцінює вираз або змінну.
- Умови (when): Кожна гілка when порівнює значення виразу з певним значенням чи діапазоном. Якщо умова виконується, виконується відповідний блок коду.
- Порівняння: У Ruby порівняння в case зазвичай використовує оператор === (оператор відповідності), що дозволяє гнучко працювати з різними типами даних, такими як діапазони, класи чи регулярні вирази.
- else: Якщо жодна умова не виконана, виконується блок else (необов'язковий).
- end: Завершує конструкцію.
Приклади використанняПриклад 1: Просте порівняння значеньПрипустимо, ми хочемо визначити, що означає певна оцінка студента.grade = "A"
case grade
when "A"
puts "Відмінно!"
when "B"
puts "Добре"
when "C"
puts "Задовільно"
else
puts "Невідома оцінка"
end
Виведе: Відмінно!Приклад 2: Робота з діапазонамиКонструкція case дозволяє використовувати діапазони для порівняння чисел.score = 85
case score
when 90..100
puts "Високий результат"
when 70..89
puts "Середній результат"
when 0..69
puts "Низький результат"
else
puts "Неправильне значення"
end
Виведе: Середній результатПриклад 3: Використання класівОператор === дозволяє перевіряти тип об'єкта.value = 42
case value
when String
puts "Це рядок"
when Integer
puts "Це ціле число"
when Float
puts "Це число з плаваючою комою"
else
puts "Невідомий тип"
end
Виведе: Це ціле числоПриклад 4: Використання без виразуМожна використовувати case без початкового виразу, перевіряючи умови напряму.age = 25
case
when age >= 18
puts "Ви дорослий"
when age >= 13
puts "Ви підліток"
else
puts "Ви дитина"
end
Виведе: Ви дорослийПрактичний прикладОсь приклад, як можна використати case/when/end для обробки введення користувача в консольній програмі:print "Введіть день тижня (1-7): "
day = gets.chomp.to_i
case day
when 1
puts "Понеділок - початок тижня!"
when 2
puts "Вівторок - тримайся!"
when 3
puts "Середа - середина тижня!"
when 4
puts "Четвер - майже п'ятниця!"
when 5
puts "П'ятниця - ура, вихідні близько!"
when 6, 7
puts "Вихідні - відпочивай!"
else
puts "Неправильний день!"
end
FAQS: Поширені запитання1. Чим case/when/end відрізняється від if/elsif/else?Конструкція case/when/end є більш читабельною, коли потрібно порівняти одне значення з кількома умовами. Вона використовує оператор ===, що дозволяє працювати з діапазонами, класами чи регулярними виразами. if/elsif/else краще підходить для складних логічних умов.2. Чи обов'язково використовувати else?Ні, блок else є необов'язковим. Якщо жодна умова не виконується і else відсутній, програма просто пропустить конструкцію case.3. Чи можна використовувати кілька значень у одному when?Так, можна вказати кілька значень через кому:case number
when 1, 3, 5
puts "Непарне число"
when 2, 4, 6
puts "Парне число"
end
4. Чи можна використовувати регулярні вирази в case?Так, оператор === підтримує регулярні вирази:text = "hello"
case text
when /hello/
puts "Знайдено привітання!"
else
puts "Немає збігу"
end
5. Чи можна вкладати case в інший case?Так, вкладені конструкції case можливі, але це може ускладнити читабельність коду. Краще розглядати альтернативні підходи, якщо логіка стає складною.ВисновокКонструкція case/when/end у Ruby є елегантним способом обробки умовного керування потоком програми. Завдяки підтримці оператора === вона дозволяє гнучко працювати з різними типами даних, включаючи числа, рядки, діапазони та класи. Використання case/when/end робить код більш структурованим і легким для розуміння, особливо в сценаріях із множинними умовами.