0Pricing
Ruby Academy · Урок

Выражения case/when

Многостороннее ветвление

«Выражения case/when» — бесплатный урок Ruby Academy на CoddyKit. Это урок 2 из 4. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения Ruby Academy, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс Ruby Academy содержит 4 уроков всего.

Ветвление по нескольким вариантам

Когда одно значение сравнивается со множеством вариантов, длинная цепочка if/elsif становится громоздкой. Выражение Ruby case делает ветвление по нескольким вариантам ясным и удобочитаемым.

day = "Mon"
case day
when "Sat", "Sun"
  puts "Weekend"
else
  puts "Weekday"
end

Основы case / when

Значение после case по очереди сравнивается с каждым when. Выполняется первая подходящая ветвь, после чего управление переходит к end.

grade = "B"
case grade
when "A"
  puts "Excellent"
when "B"
  puts "Good"
when "C"
  puts "Okay"
end

Несколько значений в when

Перечислите несколько значений в одном when, разделив их запятыми. Если совпадёт хотя бы одно из них, выполняется эта ветвь.

char = "e"
case char
when "a", "e", "i", "o", "u"
  puts "Vowel"
else
  puts "Consonant"
end

Ветвь else

Добавьте else как ветвь по умолчанию. Без неё case без совпадения просто возвращает nil.

code = 500
case code
when 200
  puts "OK"
when 404
  puts "Not Found"
else
  puts "Other status"
end

case — это выражение

Как и if, case возвращает значение совпавшей ветви, поэтому его можно сразу присвоить переменной.

score = 82
letter = case
when score >= 90 then "A"
when score >= 80 then "B"
else "C"
end
puts letter

Ключевое слово then

Используйте then, чтобы разместить тело короткой ветви на одной строке с when.

n = 3
case n
when 1 then puts "one"
when 2 then puts "two"
when 3 then puts "three"
end

Сопоставление с диапазонами

when может содержать диапазон. Ruby использует оператор === в фоновом режиме, а === диапазона проверяет принадлежность к нему.

score = 73
case score
when 90..100 then puts "A"
when 70..89 then puts "B"
when 0..69 then puts "C"
end

Сопоставление по классу

Поскольку Class === object возвращает true, когда объект является экземпляром класса, можно выполнять ветвление по типу.

value = 3.14
case value
when Integer then puts "an integer"
when Float then puts "a float"
when String then puts "a string"
end

Магия ===

Каждый when вызывает pattern === value. Диапазоны, классы и регулярные выражения определяют полезное поведение ===, поэтому case настолько гибок.

email = "jane@example.com"
case email
when /@/ then puts "Looks like an email"
else puts "No @ sign"
end

case без проверяемого значения

Не указывайте значение после case, чтобы записать ясную цепочку логических условий, подобную аккуратной конструкции if/elsif.

temp = 5
case
when temp < 0 then puts "Freezing"
when temp < 15 then puts "Cold"
when temp < 25 then puts "Mild"
else puts "Warm"
end

Объединяем всё вместе

case идеально подходит, когда решение определяется одним значением. Используйте форму без проверяемого значения, когда каждая ветвь является отдельной логической проверкой.

role = :admin
msg = case role
when :admin then "Full access"
when :editor then "Can edit"
when :viewer then "Read only"
else "No access"
end
puts msg

Быстрая проверка

Проверьте, насколько хорошо Вы понимаете case/when.

Итоги

Вы изучили выражение case:

  • when выбирает первое совпадение, затем переходит к end.
  • Один when может содержать несколько значений.
  • case возвращает значение и поддерживает then.
  • Диапазоны, классы и регулярные выражения работают, потому что when использует ===.
  • Форма без проверяемого значения образует ясную цепочку логических условий.
n = 42
kind = case
when n.zero? then "zero"
when n.positive? then "positive"
else "negative"
end
puts kind

Часто задаваемые вопросы

Урок «Выражения case/when» бесплатный?

Да — полный текст урока «Выражения case/when» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс Ruby Academy, подпишись на CoddyKit PRO. Курс Ruby Academy содержит 4 уроков всего.

Чему я научусь в уроке «Выражения case/when»?

Многостороннее ветвление Ты практикуешь Ruby Academy с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.

Нужен ли мне опыт, чтобы начать Ruby Academy?

Предыдущий опыт не требуется. Ruby Academy на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 2 из 4.

Сколько времени занимает урок «Выражения case/when»?

Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.

Можно ли писать и запускать код в этом уроке Ruby Academy?

Да. Каждый урок Ruby Academy включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.

Все уроки этого курса

  1. if, unless и тернарный оператор
  2. Выражения case/when
  3. Истинность в Ruby
  4. Защитные условия
← Назад к Ruby Academy