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文で使われると書いています。 他のケースではどんな使われ方があるんでしょうか?