Rubyリファレンス: Home

== (Object)

Edit   History

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

obj == other_obj

==演算子(メソッド)は、「オブジェクトの内容が同じかどうか」を調べるために使われます。同じならtrue、違えばfalseを返します。Objectクラスの==メソッドはequal?の別名で、「同じオブジェクトかどうか」を調べるだけのものです。

Ruby 1.9 Ruby 1.9では、Objectクラスの==メソッドはBasicObjectに移されました(この変更は、Ruby 1.8用に書いたプログラムには特に影響はありません)。

数値、文字列、配列などさまざまなクラスでは、==は上書きされて「内容が同じかどうか」を調べるように変更されています。そうしたクラスのオブジェクトで「内容ではなく、オブジェクトとして同じかどうか」を調べるには、equal?メソッドを使います。

次の例のCatクラスでは==を上書きしていないので、Objectクラスの==がそのまま使われます。

class Cat
end
 
cat1 = Cat.new
cat2 = Cat.new
cat3 = cat1
puts cat1 == cat2  # 別のオブジェクト
puts cat1 == cat3  # 同じオブジェクト
false
true

Stringクラスは==を上書きしているので、別のオブジェクトでも文字列の内容が同じであれば結果はtrueになります。

str1 = "hello"
str2 = "hello"
puts str1 == str2       # 別のオブジェクト、同じ内容
puts str1.equal?(str2)  # 別のオブジェクト
true
false

関連項目