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

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

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

作成日: 更新日:

基本的な使い方

hashメソッドは、Structオブジェクトのハッシュ値を計算して返却するメソッドです。ハッシュ値とは、オブジェクトの内容を数値に要約したもので、主にRubyのHashクラスのキーとしてオブジェクトを使用する際や、Setのようなコレクションで要素の重複を判断する際に、オブジェクトの比較を効率的に行うために利用されます。

Structクラスのインスタンスが持つhashメソッドは、そのStructが保持するすべてのメンバー変数(属性)の値に基づいてハッシュ値を生成します。これにより、たとえ異なるインスタンスであっても、同じメンバー変数の値を持つStructオブジェクトは、常に同じハッシュ値を返します。この特性は、データの内容が同じであれば、それらのStructオブジェクトは等しいものとして扱われるべき、という場合に非常に重要です。

例えば、Point = Struct.new(:x, :y)で作成したPointオブジェクトにおいて、Point.new(1, 2)Point.new(1, 2)は、xyの値が等しいため、同じハッシュ値を持ちます。これにより、HashのキーとしてPointオブジェクトを使う際に、内容が同じであれば同一のキーとして機能し、意図しない重複を防ぎながら高速な検索を可能にします。

また、hashメソッドはeql?メソッドと密接に関連しており、「a.eql?(b)が真であれば、a.hash == b.hashも真である」という重要な規約(契約)に従って実装されています。これにより、HashやSetといったデータ構造内で、Structオブジェクトを正確かつ効率的に扱えることが保証されます。

構文(syntax)

1Customer = Struct.new(:name, :email)
2customer = Customer.new("Alice", "alice@example.com")
3puts customer.hash

引数(parameters)

引数なし

引数はありません

戻り値(return)

Integer

Struct オブジェクトのハッシュ値を返します。これは、オブジェクトをハッシュテーブルなどでキーとして使用する際に、オブジェクトを一意に識別するために利用されます。

関連コンテンツ