Рубин: последовательность в списке ценностей

Вопрос о новичке Руби:

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

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

есть ли более опрятный способ сделать это?

17
задан Mike Sutton 21 January 2010 в 21:55
поделиться

3 ответа

Есть два способа:

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

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

43
ответ дан 30 November 2019 в 10:39
поделиться

Как «BOUT

if %w(valueA valueB valueC).include?(mystring)
  # do something
end
7
ответ дан 30 November 2019 в 10:39
поделиться

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

case mystring
when "valueA", "valueB", "valueC" then
 #do_something
when "value1", "value2", "value3" then
 #do_something else
else
 #do_a_third_thing
end
1
ответ дан 30 November 2019 в 10:39
поделиться
Другие вопросы по тегам:

Похожие вопросы: