Простой рубин или вопрос - PullRequest
1 голос
/ 12 декабря 2010

В консоли:

@user.user_type = "hello"
@user.user_type == "hello"
  true
@user.user_type == ("hello" || "goodbye")
  false

Как мне написать последнее утверждение, чтобы оно проверило, содержится ли @user.user_type в одной из двух строк?

Ответы [ 2 ]

8 голосов
/ 12 декабря 2010
["hello", "goodbye"].include? @user.user_type
7 голосов
/ 12 декабря 2010

Enumerable#include? - идиоматичный и простой способ, но в качестве примечания позвольте мне показать вам очень тривиальное расширение, которое (я думаю) порадует поклонников Python:

class Object
  def in?(enumerable)
    enumerable.include?(self)
  end
end

2.in? [1, 2, 3]  # true
"bye".in? ["hello", "world"] # false   

Иногда (на самом деле, чаще всего) семантически более уместно спрашивать, находится ли объект в коллекции, чем наоборот. Теперь ваш код будет выглядеть так:

@user.user_type.in? ["hello", "goodbye"]

Кстати, я думаю, что вы пытались написать:

@user.user_type == "hello" || @user.user_type == "goodbye"

Но мы, программисты, от природы ленивы, поэтому лучше использовать Enumerable#include? и друзей.

...