Какой синтаксис лучше сравнивать одну строку с несколькими другими? - PullRequest
3 голосов
/ 08 июля 2010

Я в основном ищу более красивый способ написать:

do_something() if my_string == 'first' | my_string == 'second' | my_string == 'third'

Есть идеи?

Ответы [ 4 ]

9 голосов
/ 08 июля 2010

Наиболее распространенным решением является использование Array#include?:

do_something if %w(first second third).include? my_string
0 голосов
/ 08 июля 2010

Если вы беспокоитесь об эффективности и / или удобочитаемости, я бы рекомендовал сначала создать список специальных значений с хорошим именем константы, объясняющих, почему они являются специальными, а затем использовать его следующим образом:

require 'set'
SPECIAL_VALUES = Set["first", "second", "third"]

def foo(my_string)
  do_something if SPECIAL_VALUES.include?(my_string)
end

В случае различий в способах обработки дел для «первого», «второго» и т. Д., Вы можете использовать Hash вместо Set.

0 голосов
/ 08 июля 2010

do_something if my_string =~ /^(first|second|third)$/

0 голосов
/ 08 июля 2010
do_something() if ['first', 'second', 'third'].include? my_string
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...