【Ruby3.x】Rational::<=>()メソッドの使い方
<=>メソッドの使い方について、初心者にもわかりやすく解説します。
基本的な使い方
<=>メソッドは、Rationalオブジェクトが他の数値オブジェクトと比較された際の大小関係を判定するメソッドです。Rationalクラスは、分数として表現される有理数を扱うためのクラスであり、このメソッドを実装することで、他のRationalオブジェクトはもちろん、Integer(整数)やFloat(浮動小数点数)といった異なる数値型との間でも正確な比較を行うことができます。
このメソッドは、自身(Rationalオブジェクト)と引数として渡された数値との関係に応じて、以下のいずれかの整数値を返します。自身が引数よりも小さい場合は -1 を、自身が引数と等しい場合は 0 を、自身が引数よりも大きい場合は 1 を返します。もし比較対象が数値として適切でないなど、比較が不可能な場合には nil を返します。
Rubyの多くのクラスに採用されているComparableモジュールは、この<=>メソッドの実装を前提として機能します。具体的には、Rationalクラスが<=>メソッドを定義していることで、Rubyは自動的に <(より小さい)、>(より大きい)、<=(以下)、>=(以上)、==(等しい)、そして between?(範囲内にあるか)といった、日常的によく使われる様々な比較演算子やメソッドをRationalオブジェクトに提供します。
したがって、Rationalクラスの<=>メソッドは、有理数の比較機能の中核を担うだけでなく、Rubyの統一的な比較メカニズムにおいても非常に重要な基盤となっています。このメソッドのおかげで、システム開発においてRationalオブジェクトを他の数値と比較する際に、直感的で効率的なコード記述が可能になります。
構文(syntax)
1Rational(1, 2) <=> Rational(1, 3)
引数(parameters)
req
- req: 比較対象のRationalオブジェクトまたは比較可能な値
戻り値(return)
Integer または nil
2つのRationalオブジェクトを比較した結果を返します。具体的には、レシーバが引数より小さい場合は-1、等しい場合は0、大きい場合は1を返します。比較できない場合はnilを返します。