【Ruby3.x】MatchData::eql?()メソッドの使い方
eql?メソッドの使い方について、初心者にもわかりやすく解説します。
作成日: 更新日:
基本的な使い方
eql?メソッドは、RubyのMatchDataオブジェクト間で厳密な等価性を比較するメソッドです。MatchDataオブジェクトは、正規表現が文字列内でマッチした結果を格納する特別なオブジェクトです。これには、実際にマッチした部分文字列、キャプチャグループと呼ばれる正規表現の括弧で囲まれた部分がマッチした文字列、元の入力文字列、そしてマッチに使用された正規表現オブジェクト、さらにマッチが開始された文字列内の位置(オフセット)などの情報が含まれます。
このeql?メソッドは、レシーバーであるMatchDataオブジェクトと、引数として渡された別のMatchDataオブジェクトが、これらのすべての情報において完全に一致する場合にのみtrueを返します。具体的には、マッチした部分文字列、各キャプチャグループの内容、マッチ元の正規表現オブジェクト、元の入力文字列、そしてマッチの開始オフセットがすべて同じである場合に、両者は等しいと判断されます。
一つでも異なる情報があれば、eql?メソッドはfalseを返します。この厳密な比較は、特にMatchDataオブジェクトをハッシュ(連想配列)のキーとして使用する際に、キーの重複判定や検索において正確な結果を得るために非常に重要です。システムが正規表現のマッチ結果を正確に区別する必要がある場合に活用されます。
構文(syntax)
1match_data_a = /example/.match("This is an example string.") 2match_data_b = /example/.match("This is an example string.") 3puts match_data_a.eql?(match_data_b)
引数(parameters)
other
- other: 比較対象のオブジェクト
戻り値(return)
Boolean
このメソッドは、レシーバ(メソッドを呼び出したオブジェクト)と引数で渡されたオブジェクトが、同じマッチ情報を持っている場合にtrueを、そうでない場合にfalseを返します。