Проверьте, соответствует ли переменная какая-либо из нескольких строк без длинной цепи if-elsif или case-when
Я предполагаю, что есть хороший однострочный способ сказать в ruby
if mystr == "abc" or "def " or "ghi" or "xyz"
но не может найти, как это сделать в онлайн-ссылках, которые я обычно консультирую...
Спасибо!
Ответ 1
Возможно, вы не знали, что можете задать несколько условий для одного случая:
case mystr
when "abc", "def", "ghi", "xyz"
..
end
Но для этого конкретного теста на основе строки я бы использовал regex:
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 )
Ответ 2
Вы можете использовать Array#include? следующим образом: