Rubyリファレンス: Home

=== (Module)

Edit   History

標準クラス・モジュール > Module > ===

mod === obj

===演算子(メソッド)は、右辺のオブジェクトobjが左辺modクラスのインスタンスであればtrue、そうでなければfalseを返します。

オブジェクトが属するクラスだけでなく、親クラスやインクルードしているモジュールをmodに指定してもtrueが返ります。is_a?, kind_of?を使ってobj.is_a?(mod)obj.kind_of?(mod)とするのと同じです。

arr = [1, 2, 3]
puts Array === arr
puts Enumerable === arr
true
true

===演算子は、case式でオブジェクトをテストするのに使われます。「case obj when mod」とすると、「mod === obj」が成り立つときにwhen節のコードが実行されます。次の例のcountメソッドは、case式で引数のオブジェクトのクラスを調べて、文字数をカウントするものです。

def count(obj)
  case obj
  when String then obj.size
  when Array  then obj.inject(0) {|total, item| total += count(item) }
  else count(obj.to_s)
  end
end
 
puts count("hello")
puts count(["hello", "world", 123])
5
13

関連項目