Webエンジニア向けプログラミング解説動画をYouTubeで配信中!
▶ チャンネル登録はこちら

【Ruby3.x】StringIO::pos=()メソッドの使い方

pos=メソッドの使い方について、初心者にもわかりやすく解説します。

作成日: 更新日:

基本的な使い方

pos=メソッドは、StringIOオブジェクトが保持するデータの現在の読み書き位置を設定するメソッドです。

StringIOクラスは、メモリ上に文字列データを確保し、これをファイルであるかのように読み書き操作できるようにするRubyの組み込みクラスです。実際のファイル操作において、読み書きする場所を示す「ファイルポインタ」のような概念があるように、StringIOオブジェクトも内部データのどこを操作しているかを示す現在位置を管理しています。pos=メソッドは、この現在位置を任意の場所に明示的に変更するために使用されます。

このメソッドは、引数として整数値を一つ受け取ります。この整数値は、StringIOオブジェクトのデータ先頭から数えたバイト単位のオフセット(距離)を表し、新しく設定したい読み書き位置を指定します。例えば、string_io_instance.pos = 100と記述すると、読み書きの現在位置がデータの先頭から100バイト目の位置へ移動します。

設定する位置が現在のデータの長さよりも大きい場合、StringIOオブジェクトの内部データは自動的にその指定された位置まで拡張されます。拡張された部分には、Rubyの仕様によりNUL文字(\0)が自動的に埋められます。これにより、データの末尾を超えた位置からでも新しいデータを書き込んだり、読み書き操作を開始したりすることが可能になります。

pos=メソッドを利用することで、StringIOオブジェクトが扱うデータの中の特定の場所へ直接移動して読み書きを再開したり、既存のデータの一部を上書きしたり、あるいはデータを特定のオフセットに追記したりといった、柔軟なデータ操作を実現できます。これは、ファイル入出力においてIO#seekメソッドが提供する機能と概念的に同様の役割を果たすものです。

構文(syntax)

1require 'stringio'
2
3io = StringIO.new("example string")
4io.pos = 7

引数(parameters)

req

  • position: 読み書きの位置を指定する整数

戻り値(return)

Integer

StringIOオブジェクトの現在の読み書き位置を整数で返します。

関連コンテンツ

関連プログラミング言語