Останні пвідмленн

#1
Ruby / Ruby: Case/When/End Конструкці...
Останй допис від 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 робить код більш структурованим і легким для розуміння, особливо в сценаріях із множинними умовами.
#2
Html / Додавання JavaScript до HTML (...
Останй допис від Ayseg - ер. 24, 2025, 12:33 PM
#3
Flutter / Flutter: Користувальницькі кла...
Останй допис від Ayseg - ер. 24, 2025, 12:32 PM
#4
Python / Python: Параметризовані функці...
Останй допис від Ayseg - ер. 24, 2025, 12:32 PM
#5
Php / Пояснено в PHP $ _COOKIE (Лекц...
Останй допис від Ayseg - ер. 24, 2025, 12:30 PM
#6
Оголошення / Яку мову програмного забезпече...
Останй допис від Ayseg - ер. 24, 2025, 11:01 AM
Драстуйте! Ми створили опитування, щоб дізнатися вашу найбільш часто бажану мову програмного забезпечення та ввести більше вмісту в категорію цієї письмової мови на нашому веб-сайті. Заздалегідь дякуємо Вам за участь.

Бажаємо вам хороших форумів.
Ayseg[dot]com його команда.
#7
Html / Теги списку Html (Лекція з від...
Останй допис від Ayseg - Серп. 23, 2024, 12:35 PM
#8
Html / Теги абзаців Html (Лекція з ві...
Останй допис від Ayseg - Серп. 23, 2024, 12:34 PM
#9
Pascal / Підручник з Pascal: процедури ...
Останй допис від Ayseg - Серп. 23, 2024, 12:33 PM
#10
Pascal / Pascal: Заяви у справі (Лекція...
Останй допис від Ayseg - Серп. 23, 2024, 12:33 PM