hotoolong's blog

プログラムのことやエンジニアリングに関することを記事にしています。

Rubyの+=はメソッドじゃない

演算周りの処理をまとめていた時にsendで呼び出せると 綺麗にリファクタリングできるかなとおもい調べていると

1.send(:'+',3)
=> 4
1.send(:'+=',3)
NoMethodError: undefined method `+=' for 1:Fixnum

NoMethodErrorになってしまったのですが、Google先生に聞いいてみてもなかなかみつけにくかったのですが、

Rubyのリファレンスの演算子式の自己代入に記載がありました。

演算子式 (Ruby 2.0.0)

&&, ||以外は

  式1 = 式1 op 式2 

に置き換わるそうです。 基本的なところなんですね。。