【Ruby3.x】Array::<=>()メソッドの使い方
<=>メソッドの使い方について、初心者にもわかりやすく解説します。
作成日: 更新日:
基本的な使い方
<=>メソッドは、自身(レシーバー)と別の配列(引数)を比較し、その相対的な順序を示す整数を返すメソッドです。このメソッドは、配列の要素を左から右へ順に一つずつ比較していきます。各要素の比較には、それぞれの要素が持つ<=>メソッドが利用されます。
比較の結果は以下のいずれかの整数値またはnilとなります。もし、最初に異なる要素が見つかった場合、その要素同士の比較結果が、配列全体の比較結果として返されます。例えば、[1, 2, 3]と[1, 2, 4]を比較する場合、最初の2つの要素は同じですが、3番目の要素で3が4より小さいと判断され、全体の比較結果として-1が返されます。
すべての要素が等しい場合、今度は配列の長さが比較されます。両方の配列が同じ長さであれば0(等しい)を返します。レシーバーの配列が引数の配列よりも長い場合は1(レシーバーが大きい)を返し、逆に引数の配列の方が長い場合は-1(レシーバーが小さい)を返します。
もし配列の要素の中に、互いに比較できない型(例えば、文字列と数値を直接比較しようとするなど)が含まれる場合、このメソッドはnilを返します。このメソッドは、配列をソートする際などに内部的に利用され、配列間の順序付けを決定するのに役立ちます。
構文(syntax)
1[1, 2, 3] <=> [1, 2, 4]
引数(parameters)
req
- other: 比較対象の配列
戻り値(return)
Integer or nil
2つの配列を比較します。最初の配列が2番目の配列より小さい場合は-1、等しい場合は0、大きい場合は1を返します。比較できない場合はnilを返します。