Rubyの==と===の違い
Rubyの==と===について勘違いしてたので、備忘録としてまとめてみました。 ;;
==の挙動
以下のように右辺と左辺の値を比べて一致する場合、true
を返します。
なので一致しない場合はfalse
を返します。
irb(main):001> 2 == 2.0
=> true
irb(main):002> String == 'hoge'
=> false
=== の挙動
右辺がStringオブジェクト、Integerオブジェクトの場合は==
と同じ挙動です。
しかし左辺がクラスオブジェクトの場合、そのクラスのインスタンスがどうかを判定します。
irb(main):001> 2 === 2.0
=> true
irb(main):002> String === 'hoge'
=> true
どんな時に使うんだろう?
Object#=== (Ruby 3.3 リファレンスマニュアル)ではcase
文で使われると書いています。
他のケースではどんな使われ方があるんでしょうか?