hakeの日記

Windows環境でプログラミングの勉強をしています。

演算子の定義

Rubyの勉強
クラス独自の演算子を定義する。

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]