おもしろwebサービス開発日記

Ruby や Rails を中心に、web技術について書いています

オブジェクトの比較をする方法まとめ

なんかいろいろ方法があるのでメモ。

equal?

同一のオブジェクトを参照してたらtrue。下記のコードと同じ。

a.object_id == b.object_id

==

==で下記のオブジェクトを比較すると、値が等しいかどうかをチェックする。

  • String
  • Array
  • Hash

FixnumとFloatの比較では型変換を自動でしてくれる

1 == 1.0 #=> true

FixnumとStringはダメ

1 == "1" #=> false

eql?

型変換をしない厳格な==として使われることが多い。

1 == 1.0 #=> true
1.eql? 1.0 #=> false

===

case~whenで自動で使われる。===単体で使われることは少ない。かなり柔軟な比較をしてくれる。

(1..10) === 5 #=> true
/d+/ === "123" #=> true
String === "s"
:s === "s" #=> true(Ruby1.9)

まとめ

基本的に==で問題なさそうだけど、いざという時のため?に他の演算子メソッドも一応押さえておくべきですねー

参考

プログラミング言語 Ruby
まつもと ゆきひろ David Flanagan
オライリージャパン
売り上げランキング: 13255