oop/operator_methods/extended_parens.rb

tests/_examples/oop/operator_methods/extended_parens.rb in the metorex repository.

class Value
  def initialize(v)
    @v = v
  end

  def <=>(other)
    @v <=> other.val()
  end

  def <<(other)
    Value.new(@v * 2 + other.val())
  end

  def val
    @v
  end

  def to_s
    @v.to_s
  end
end

a = Value.new(3)
b = Value.new(5)

puts a <=> b
puts b <=> a
puts a <=> a

e = a << b
puts e

Output:

-1
1
0
11