【Ruby3.x】StringScanner::matched?()メソッドの使い方
matched?メソッドの使い方について、初心者にもわかりやすく解説します。
基本的な使い方
matched?メソッドは、RubyのStringScannerクラスにおいて、直前のスキャン操作が成功し、かつ非空の文字列がマッチしたかどうかを確認するメソッドです。このメソッドは、StringScannerオブジェクトが保持する文字列に対し、scan、skip、checkなどのパターンマッチング操作を実行した直後に呼び出されることを想定しています。
具体的には、直前のスキャン操作がパターンにマッチし、そのマッチした文字列が空文字列("")でなかった場合にtrueを返します。もし直前のスキャン操作がパターンにマッチしなかった場合、またはパターンにはマッチしたがマッチした文字列が空文字列であった場合にはfalseを返します。また、まだ一度もスキャン操作が実行されていない場合や、resetメソッドによってスキャン状態がリセットされた直後など、直前のスキャン操作が存在しない場合にはnilを返します。
このメソッドは、scanやskipメソッドの戻り値だけでは判断が難しい「空文字列にマッチした場合」を区別したい場合に特に役立ちます。例えば、scan(/a?/)のように、0文字にマッチする可能性のあるパターンをスキャンした際に、実際に文字が読み取られたのか、それとも単に0文字にマッチしただけなのかを確認できます。これにより、プログラムのロジックにおいて、意味のある文字列がスキャンされたかどうかを正確に判定することが可能になります。matchedメソッドがマッチした文字列そのものを返すのに対し、matched?メソッドは真偽値(またはnil)でその状態を簡潔に表現します。
構文(syntax)
1require 'strscan' 2 3scanner = StringScanner.new("example text") 4scanner.scan(/example/) 5scanner.matched?
引数(parameters)
引数なし
引数はありません
戻り値(return)
Boolean
直前のマッチング操作が成功したかどうかを示す真偽値を返します。