假设您有多个OR的条件,例如
if action == 'new' || action == 'edit' || action == 'update'
另一种写这个的方法是:
if ['new', 'edit', 'action'].include?(action)
但这感觉就像编写逻辑的“向后”方式。
是否有任何内置方法可以执行以下操作:
if action.equals_any_of?('new', 'edit', 'action')
更新 - 我非常热衷于这个小片段:
class Object
def is_included_in?(a)
a.include?(self)
end
end
更新2 - 基于以下评论的改进:
class Object
def in?(*obj)
obj.flatten.include?(self)
end
end
答案 0 :(得分:5)
使用正则表达式?
action =~ /new|edit|action/
或者:
action.match /new|edit|action/
或者只是编写一个在应用程序上下文中具有语义意义的简单实用程序方法。
答案 1 :(得分:5)
另一种方式是
case action
when 'new', 'edit', 'action'
#whatever
end
您还可以对此类案例使用正则表达式
if action =~ /new|edit|action/
答案 2 :(得分:1)
您可以对字符串数组使用%w
表示法:
%w(new edit action).include? action