Сравнение переменной с двумя разными значениями в Ruby - PullRequest
4 голосов
/ 14 января 2010

Это больше вопрос семантики, чем что-либо еще.

Я хотел бы проверить, является ли переменная одним из двух значений. Самый простой способ сделать это будет:

if var == "foo" || var == "bar"
# or
if var == 3     || var == 5

Но это не очень СУХОЙ для меня. Я знаю, что могу использовать String.match(), но это не работает для нестроковых переменных и работает в три раза медленнее.

Есть ли лучший способ проверки переменной по двум значениям?

Ответы [ 3 ]

14 голосов
/ 14 января 2010

Поместите все значения в массив, и тогда все будет просто.

%w[foo bar].include?('foo') # => true

[3,5].include?(3) # => true
5 голосов
/ 14 января 2010

Кажется, что оператор case делает то, что вы хотите.

case var
  when "foo", "bar" then case1()
end

case var
  when 3, 5 then case2()
end

Кажется, что методы на основе массива будут медленнее, чем эта.

1 голос
/ 14 января 2010

Вы можете сделать:

%W(foo bar baz).include? var

Или:

[3, 5].include? var
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...