Ruby: строка в списке значений

Новый вопрос Ruby:

В настоящее время я пишу:

if mystring == "valueA" or mystring == "ValueB" or mystring == "ValueC"

Есть ли более простой способ сделать это?

Ответ 1

Существует два способа:

RegEx:

if mystring =~ /^value(A|B|C)$/ # Use /\Avalue(A|B|C)\Z/ here instead 
   # do something               # to escape new lines
end

Или, более явно,

if ["valueA", "valueB", "valueC"].include?(mystring)
   # do something
end

Надеюсь, что это поможет!

Ответ 2

Как "бой"

if %w(valueA valueB valueC).include?(mystring)
  # do something
end

Ответ 3

Предполагая, что вы хотите расширить эту функциональность с помощью других групп соответствия, вы также можете использовать case:

case mystring
when "valueA", "valueB", "valueC" then
 #do_something
when "value1", "value2", "value3" then
 #do_something else
else
 #do_a_third_thing
end