【Ruby3.x】Module::<=>()メソッドの使い方
<=>メソッドの使い方について、初心者にもわかりやすく解説します。
作成日: 更新日:
基本的な使い方
<=>メソッドは、Module クラスに所属し、オブジェクト間の比較を実行するメソッドです。これは「宇宙船演算子」とも呼ばれ、主に2つのオブジェクトの相対的な順序を判断するために使用されます。このメソッドは、self(メソッドが呼び出されたオブジェクト)と引数 other を比較し、結果を整数で返します。具体的には、self が other より小さい場合は負の整数(慣習的に -1)、等しい場合は 0、大きい場合は正の整数(慣習的に 1)を返します。
このメソッドが特に重要となるのは、Rubyの Comparable モジュールと組み合わせて使用される場合です。Comparable モジュールをクラスにインクルードし、そのクラス内で <=> メソッドを適切に定義するだけで、Rubyは自動的に <, >, <=, >=, ==, between? といったすべての比較演算子やメソッドを提供します。これにより、開発者はオブジェクトの比較ロジックを <=> メソッド一つに集約することができ、コードの重複を避け、一貫性のある比較動作を保証できます。例えば、数値や文字列のように、順序を持つデータを扱うカスタムクラスを作成する際に非常に役立ちます。
構文(syntax)
1module MyModuleA; end 2module MyModuleB; end 3 4MyModuleA <=> MyModuleB
引数(parameters)
other
- other: 比較対象となるオブジェクト
戻り値(return)
Integer or nil
演算子 <=> は、レシーバと引数を比較し、レシーバが引数より小さい場合は -1、等しい場合は 0、大きい場合は 1 を返します。比較できない場合は nil を返します。