Webエンジニア向けプログラミング解説動画をYouTubeで配信中!
▶ チャンネル登録はこちら

【Ruby3.x】Set::compare_by_identity()メソッドの使い方

compare_by_identityメソッドの使い方について、初心者にもわかりやすく解説します。

作成日: 更新日:

基本的な使い方

compare_by_identityメソッドは、Setオブジェクトが要素の等価性を判断する方法を変更するメソッドです。

通常、Setは要素が持つ「値」に基づいて等価性を判断します。例えば、同じ内容を持つ文字列や数値は同一の要素とみなされます。しかし、このメソッドを呼び出すと、Setは要素がメモリ上の同じ場所に存在する「オブジェクトそのもの」であるかどうか、つまりオブジェクトの同一性によって比較するようになります。これは、Object#equal?メソッドによる比較に相当します。

これにより、たとえ値が同じであっても、異なるインスタンスのオブジェクトであれば、Setはそれらを別々の要素として扱います。例えば、同じ値を持つ複数のハッシュオブジェクトやカスタムオブジェクトを区別して格納したい場合に、この機能は非常に役立ちます。

一度compare_by_identityを呼び出して比較モードを変更すると、そのSetインスタンスに対して元の値による比較モードに戻すことはできませんので、利用の際にはご注意ください。

構文(syntax)

1require 'set'
2
3my_set = Set.new
4my_set.compare_by_identity

引数(parameters)

引数なし

引数はありません

戻り値(return)

self

Setクラスのcompare_by_identityメソッドは、self、つまりメソッドが呼び出されたSetオブジェクト自身を返します。これにより、Set内の要素の比較方法をオブジェクトの同一性(メモリ上のアドレス)に基づいて行うように設定が変更されます。

関連コンテンツ

関連プログラミング言語