【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)は、xとyの値が等しいため、同じハッシュ値を持ちます。これにより、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 オブジェクトのハッシュ値を返します。これは、オブジェクトをハッシュテーブルなどでキーとして使用する際に、オブジェクトを一意に識別するために利用されます。