【Ruby3.x】StringIO::ungetc()メソッドの使い方
ungetcメソッドの使い方について、初心者にもわかりやすく解説します。
基本的な使い方
ungetcメソッドは、StringIOオブジェクトから読み込んだ文字を、再度読み込み可能な状態に戻すことを実行するメソッドです。StringIOは、メモリ上の文字列をあたかもファイルであるかのように扱うクラスであり、このメソッドはその読み取り位置を柔軟に操作するのに役立ちます。
プログラムがファイルやストリームから文字を読み取る際、時には「この文字はまだ読まない方が良かった」「一度読んだが、やはり読み戻したい」といった状況が発生します。ungetcメソッドは、このような場面で、直前に読み取った文字、あるいは任意の1文字を、次回の読み込みで再度取得できるようにストリームに戻す役割を担います。これにより、読み取りポインタの位置が、戻された文字の直前に移動したかのように振る舞い、次に読み取り操作が行われた際に、戻された文字が最初に返されるようになります。
引数には、ストリームに戻したい文字を指定します。これは、1文字の文字列として渡すことも、その文字のコードポイントを表す整数として渡すことも可能です。たとえば、"a"という文字を戻す場合や、97("a"のASCIIコード)を渡すことなどができます。メソッドは処理が完了すると、常にnilを返します。
この機能は、文字列の解析や、ある特定のパターンに合致するまで文字を読み進め、パターンが見つからなかった場合に一部の文字を読み取り直す必要があるような高度な処理で特に有効です。システムエンジニアを目指す初心者の方も、データ処理の柔軟性を高める手段として理解しておくと良いでしょう。
構文(syntax)
1require 'stringio' 2 3io = StringIO.new("abc") 4io.read(1) 5io.ungetc("a") 6io.read(1)
引数(parameters)
char
- char: StringIO オブジェクトに再度挿入する 1 文字の文字列
戻り値(return)
StringIO
このメソッドは、引数として与えられた文字をStringIOオブジェクトの先頭に挿入します。挿入された文字は、次の読み込み操作で取得されます。