3

たとえば、複数の 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
4

3 に答える 3

5

正規表現を使用しますか?

action =~ /new|edit|action/

または:

action.match /new|edit|action/

または、アプリのコンテキストで意味のある単純なユーティリティ メソッドを記述します。

于 2012-04-30T18:31:01.767 に答える
5

さらに別の方法は

case action
when 'new', 'edit', 'action'
  #whatever
end

このような場合に正規表現を使用することもできます

if action =~ /new|edit|action/
于 2012-04-30T18:34:12.940 に答える
1

%w文字列の配列には次の表記法を使用できます。

%w(new edit action).include? action
于 2012-04-30T18:32:32.323 に答える