你可以猴子补丁String
做这样的事情
class String
def include_all?(*args)
args.map{|arg| self.include?(arg)}.reduce(:&)
end
end
然后调用像
action = "look a dog bed for sale"
action.include_all?("look","bed")
#=> true
action.include_all?("look","bed","fish")
#=> false
这样做是为你提供它需要尽可能多的参数,并使用它们放入一个Array
splat *
然后检查以确定每个包含在String
中。然后,它降低了他们使用&
运营商的单一值,使之转化为
action = "look a dog bed for sale"
action.include_all?("look","bed")
#args = ["look","bed"]
#args.map{|arg| action.include?(arg)}
#=> [true,true]
#true & true
#=> true
action.include_all?("look","bed", "fish")
#args = ["look","bed","fish"]
#args.map{|arg| action.include?(arg)}
#=> [true,true,false]
#true & true & false
#=> false
其他建议是更加标准程序。我只想指出新的红宝石主义者,改变一个阶级是一个相当简单的过程。使用你自己的风险
你能详细说明什么是/不工作?添加输入,预期行为和实际行为将会很有帮助。 – Max 2014-10-10 14:44:19
如果您需要检查数组中多个值的成员关系,则需要像'action.include?('look')&& action.include?('bed')'或者'smarter'['look' “床”。所有? {| O | action.include? o}'或者更邪恶的'''''看','床']。 &action.method(:include?)' – 2014-10-10 14:53:47