演算子は定義できる

これは2022/10/04のMK社内LTで発表した内容です。

概要

プログラム言語には演算子( +-= など)を定義可能なものが存在します。例えば、RubyやC++などです。

クラスインスタンス同士で演算子が使われているコードを見つけた際は演算子定義やオーバーライドを想定してもよろしいかと思われます。

定義例

Rubyには「再定義できる演算子」が存在します。以下は二次元ベクトルのクラスを定義し、ベクトルの和の計算を行った例です。

class Vector2
  attr_accessor :x, :y

  def +(other)
    v = Vector2.new
    v.x = x + other.x
    v.y = y + other.y
    v
  end
end

v1 = Vector2.new
v1.x = 1
v1.y = 2

v2 = Vector2.new
v2.x = 3
v2.y = 4

result = v1 + v2

p result.x
p result.y

最後の出力にて result.x は 4 、result.y は 6 と出力されます。

この記事をシェア

弊社では、一緒に会社を面白くしてくれる仲間を募集しています。
お気軽にお問い合わせください!