Ruby equal?を使ってオブジェクトの同一性を比較する
==演算子は、ほとんどのクラスで同値性を判断するメソッドとして定義されている。
==演算子で比較すると、別々のインスタンスでも値が同じであれば真を返す。
この値の比較のことを同値性の比較という。
同じインスタンスであることを比較するには、equal?メソッドを使う。
このインスタンスの比較のことを同一性の比較という。
hogeA = 'yahoo' hogeB = 'yahoo' if hogeA == hogeB puts "== -> true" #trueになる else puts "== -> false" end if hogeA.equal?(hogeB) puts "equal? -> true" else puts "equal? -> false" #falseになる end seisu = 30 fudo = 30.0 puts seisu == fudo #true puts seisu.equal?(fudo) #false
整数と浮動小数点を==で比較するときは自動的に型変換が行われる。
ちなみに、Rubyのイコール3つ(===)は、is_a?と同じ意味で、オブジェクトがそのクラスのサブクラスのインスタンスかどうかを調べるために使う。