演算子の定義
class Test attr_accessor :array def initialize @array = [1, 2, 3, 4, 5] end def []=(idx,val) # 配列の代入 @array[idx] = val end def [](idx) # 配列の参照 @array[idx] end def +(other) # 二項演算子 ary = [] @array.size.times{|i| ary[i] = @array[i] + other[i]} ary end def -@ # 単項演算子 ary = [] @array.size.times{|i| ary[i] = @array[i] * -1 } ary end end a = Test.new p a.array # => [1, 2, 3, 4, 5] p a[1] # => 2 a[1] = 100 p a.array # => [1, 100, 3, 4, 5] p a + a # => [2, 200, 6, 8, 10] p -a # => [-1, -100, -3, -4, -5]