演算子をオーバーライドする
コメントでいただいたので、調べてみました。
rubyは演算子をオーバーライド(上書き)することができるようです。
対象となる演算子
| ^ & <=> == === =~ > >= < <= << >> + - * / % ** ~ +@ -@ [] []= ` ! != !~
上記はメソッド内でよく見かけるやつですね。
これがないとコードがまともに書けないですね。
演算子をオーバーライドしつつ、前回のメソッド=
を代入して使ってみました。
class Greet def initialize(words = []) @words = words end def +(word) @words << word end def -(word) @words.delete(word) end def hello=(word) p word end def hello p @words end end greet = Greet.new(%w(foo bar)) greet.hello= 'Hello' →"Hello" greet + 'test' greet.hello →["foo", "bar", "test"] greet - 'foo' greet.hello →["bar", "test"]
こんな感じになるのではないでしょうか。
演算子を書き換えることができるのは、C++
ぐらい(?)のようですね。
それだけ貴重な書き換えだったとは・・・
いや、実は違うんだ!という方がいたらどんどん突っ込んでくださいm( )m
参考