【Ruby3.x】Symbol::<=>()メソッドの使い方
<=>メソッドの使い方について、初心者にもわかりやすく解説します。
基本的な使い方
<=>メソッドは、Symbolオブジェクトを他のSymbolオブジェクトと比較し、その相対的な順序を判定するメソッドです。このメソッドは、自身(レシーバ)と引数の比較結果を数値で返します。具体的には、自身が引数よりも小さいと判断される場合は-1を、両者が等しい場合は0を、自身が引数よりも大きいと判断される場合は1を返します。この三つの値によって比較結果を表すことから、「三方比較」と呼ばれることもあります。
例えば、:appleと:bananaを比較する場合、:apple <=> :bananaはアルファベット順で:appleが前であるため-1を返します。:apple <=> :appleは等しいので0を返し、:banana <=> :appleは:bananaが後であるため1を返します。
このメソッドは、RubyのComparableモジュールにおいて非常に重要な役割を果たします。SymbolクラスがComparableモジュールをインクルードしているため、<=>メソッドを定義するだけで、<、>、<=、>=、==、between?などのより多くの比較演算子が自動的に利用可能になります。これにより、開発者は複雑な比較ロジックを繰り返し実装することなく、簡潔にオブジェクトの順序や等価性を判定できるようになります。異なる型のオブジェクトを比較しようとした場合は、nilを返すことがありますので注意が必要です。
構文(syntax)
1:symbol_a <=> :symbol_b 2:symbol_a <=> :symbol_a 3:symbol_b <=> :symbol_a 4:symbol_a <=> "string"
引数(parameters)
req
- other_symbol: Symbol: 比較対象のシンボル
戻り値(return)
Integerまたはnil
Symbolクラスの<=>メソッドは、レシーバとなるシンボルと引数として渡されたオブジェクトを比較します。比較結果が等しい場合は0、レシーバが引数より小さい場合は-1、レシーバが引数より大きい場合は1を返します。比較できない場合はnilを返します。