简单的Ruby'或'问题

时间:2010-12-12 09:15:58

标签: ruby-on-rails ruby conditional

在控制台中:

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

如何编写最后一个语句,以便检查两个字符串之一中是否包含@user.user_type

2 个答案:

答案 0 :(得分:8)

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

答案 1 :(得分:7)

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?和朋友。