【Ruby3.x】IO::Buffer::or!()メソッドの使い方
or!メソッドの使い方について、初心者にもわかりやすく解説します。
基本的な使い方
or!メソッドは、IO::Bufferオブジェクトに格納されたバイト列に対してビット単位の論理和(OR)演算を実行するメソッドです。
IO::Bufferは、ファイルやネットワークとの間でやり取りされるような、メモリ上の生のバイトデータを効率的に扱うための領域(バッファ)を表すクラスです。このor!メソッドは、そのIO::Bufferが保持するデータ(バイト列)の各バイトに対し、引数として渡された値との間でビットOR演算を行います。
ビットOR演算とは、二つのビットを比較し、どちらか一方でも1であれば結果を1とし、両方が0の場合にのみ結果を0とする操作です。このメソッドでは、このビットOR演算をバイト単位で行います。
引数には、別のIO::Bufferオブジェクト、または整数を指定できます。引数が別のIO::Bufferオブジェクトの場合、レシーバ(呼び出し元のバッファ)と引数のバッファの各バイトを対応させ、それぞれの間でビットOR演算を実行します。バッファの長さが異なる場合は、短い方の長さに合わせて処理されます。一方、引数が整数値の場合、レシーバの各バイトに対して、その整数値との間でビットOR演算を行います。
メソッド名の末尾に「!」が付いていることからもわかるように、このメソッドはレシーバであるIO::Bufferオブジェクトの内容を直接変更(破壊的に更新)します。元のデータは上書きされますので、利用時にはその影響を十分に理解しておくことが重要です。主に、特定のビットフラグを設定したり、データの特定の部分をマスクするような、低レベルなデータ操作において活用されます。
構文(syntax)
1buffer = IO::Buffer.new(1) 2buffer[0] = 0b01010101 3buffer.or!(0b11110000)
引数(parameters)
other
- other: IO::Buffer: 比較対象となるIO::Bufferオブジェクト
戻り値(return)
IO::Buffer
このメソッドは、レシーバーである IO::Buffer オブジェクト自身を返します。