Как использовать switch в Ruby?

В языке Ruby (и в Perl) для реализации функционала switch (многопутевого ветвления) используется выражение case. Обратите внимание, что case в Ruby позволяет делать немного больше в отличии от других языков программирования. Главным преимуществом является то, что оно позволяет не только сравнивать на равенство, но и дает возможность использовать различные условия (регулярные выражения и диапазоны вполне можно использовать в качестве условия).

В качестве примера работы case рассмотрим следующую программу:
something = 0

case something
when 1
  puts "Твой ответ 1"
when 2..3
  puts "Твой ответ 2 или 3"
when "mew"
  puts "Mew-mew :)"
else
  puts "Введенное значение отлично от 1,2,3 и 'mew'"
end

Запуск этого куска кода приведет нас к последнему результату, потому что все выше перечисленные ветви не равняются something:

$ ruby case.rb 
Введенное значение отлично от 1,2,3 и 'mew'

Можно экспериментировать и менять значение something на что-то другое, а также изменять условия попадания в наши ветвления. Программа будет завершена, когда она зайдет внутрь определенного условия и выполнит код находящийся внутри.

Немного о структуре выражения case:

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

Можно сказать, что выражение case очень полезно если мы не хотим писать громоздкие if/else условия. Удобен для проверки на равенство, а также полезен для работы с диапазонами, регулярными выражениями и различными условиями.
Наверх