演算子は定義できる
2022年 10月 04日 火曜日
これは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 と出力されます。
この記事をシェア