Возможно, вы не знали, что вы можете поместить несколько условий в один случай:
case mystr
when "abc", "def", "ghi", "xyz"
..
end
Но для этого конкретного теста на основе строк я бы использовал регулярное выражение:
if mystr =~ /\A(?:abc|def|ghi|xyz)\z/
Если вы не хотите создавать регулярное выражение и вам не нужен оператор case
, вы можете создать массив объектов и использовать тест Array#include?
, чтобы проверить, является ли объектв массиве:
if [a,b,c,d].include?( o )
или с помощью функции «Обезьяны-патчи» вы можете даже перевернуть его:
class Object
def in?( *values )
values.include?( self )
end
end
if o.in?( a, b, c, d )