【Ruby3.x】MatchData::deconstruct()メソッドの使い方
deconstructメソッドの使い方について、初心者にもわかりやすく解説します。
作成日: 更新日:
基本的な使い方
deconstructメソッドは、RubyのMatchDataクラスが保持する正規表現のマッチ結果を、パターンマッチングの際に分解する(デコンストラクトする)ためのメソッドです。MatchDataオブジェクトは、正規表現が文字列内でどのようにマッチしたかの詳細な情報を持っています。このメソッドは、MatchDataオブジェクトを、マッチした文字列全体(インデックス0)を除いた、正規表現のキャプチャグループ(正規表現中の括弧()で囲まれた部分)にマッチした部分文字列群を要素とする配列として扱えるようにします。
具体的には、MatchDataオブジェクトに対してこのメソッドが呼び出されると、m[1], m[2], ...といったキャプチャグループの値を順に並べた配列とみなせるようになります。この機能は、Ruby 3で導入されたパターンマッチング構文、特にcase式のin節において非常に有用です。パターンマッチングで正規表現を用いる際、MatchDataオブジェクトが生成されますが、このdeconstructメソッドが内部的に利用されることで、正規表現のキャプチャグループの値を直接、個別の変数に簡潔に割り当てることが可能になります。これにより、正規表現によるデータ抽出と構造化されたデータの処理を、より直感的かつ少ないコード量で実現し、プログラムの可読性と保守性を向上させることができます。
構文(syntax)
1m = "hello world".match(/(\w+) (\w+)/) 2p m.deconstruct
引数(parameters)
引数なし
引数はありません
戻り値(return)
Array
マッチした各キャプチャグループの内容を要素とする配列を返します。