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

【Ruby3.x】IO::Buffer::<=>()メソッドの使い方

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

作成日: 更新日:

基本的な使い方

<=>メソッドは、二つのIO::Bufferオブジェクトの内容を比較し、その順序関係を判定するメソッドです。このメソッドは、「宇宙船演算子」とも呼ばれ、一般的な比較操作に利用されます。具体的には、左辺のIO::Bufferオブジェクトと、引数として渡されるもう一方のIO::Bufferオブジェクトが保持するバイト列のデータを、先頭から順にバイト単位で比較します。

比較の結果は整数値で返されます。もし左辺のIO::Bufferが右辺のIO::Bufferよりも小さい(辞書順で先に来る)と判断された場合は-1を返します。両方のIO::Bufferオブジェクトが保持するバイト列の内容が完全に一致する場合は0を返します。そして、左辺のIO::Bufferが右辺のIO::Bufferよりも大きい(辞書順で後に来る)と判断された場合は1を返します。

このメソッドは、IO::Bufferオブジェクトの配列をソートする際や、二つのバイナリデータが同一であるか、あるいはどちらが「辞書順」で先にくるかを確認したい場合に非常に便利です。システムにおいて、メモリ上に存在する特定のデータ領域の内容を厳密に比較するニーズがある場合や、データの整合性を検証する際に、基本的な比較操作として活用されます。

構文(syntax)

1buffer1 = IO::Buffer.new(4)
2buffer1.set_value(0, "\x01\x02\x03\x04")
3
4buffer2 = IO::Buffer.new(4)
5buffer2.set_value(0, "\x01\x02\x03\x05")
6
7result = buffer1 <=> buffer2
8# result は -1, 0, または 1 のいずれかを返します。
9# この例では、buffer1 のバイト列が buffer2 より小さいため、-1 が返されます。

引数(parameters)

req

  • req: 比較対象となる IO::Buffer オブジェクト

戻り値(return)

Integer または nil

2つのIO::Bufferオブジェクトを比較し、最初のオブジェクトが2番目のオブジェクトより小さい場合は-1、等しい場合は0、大きい場合は1を返します。比較対象がない場合はnilを返します。

関連コンテンツ

関連プログラミング言語