UFO演算子
概要
RubyのUFO演算子(<=>)は「宇宙船演算子」とも呼ばれ、2つのオブジェクトを比較して順序を判断するために使用されます。この演算子は、左辺と右辺のオブジェクトの大小関係を比較し、次のような結果を返します。
-1: 左辺が右辺よりも小さいとき
0: 左辺と右辺が等しいとき
1: 左辺が右辺よりも大きいとき
Comparableモジュールをincludeして<=>メソッドを実装することでUFO演算子を使用できるようになる
code:ruby
# 基本的なUFO演算子の使い方
puts 3 <=> 5 # => -1 (3は5より小さい)
puts 5 <=> 5 # => 0 (5は5と等しい)
puts 7 <=> 5 # => 1 (7は5より大きい)
# 配列や文字列の比較にも使える
puts "apple" <=> "banana" # => -1 ("apple"は"banana"より辞書順で小さい)
使用例
sort / sort_byメソッドでの使用
code:ruby
sorted_array = array.sort { |a, b| a <=> b } # 昇順ソート
Comparableモジュールのinclude
code:ruby
class Box
include Comparable # Comparableをミックスイン
attr_reader :volume
def initialize(volume)
@volume = volume
end
# <=> 演算子の定義
def <=>(other)
volume <=> other.volume
end
end
box1 = Box.new(10)
box2 = Box.new(20)
puts box1 < box2 # => true
puts box1 == box2 # => false
puts box1 > box2 # => false