特異メソッド
Integerの+を書き換えようとしたが、挙動が変化しない。たぶんパフォーマンスの改善のためにIntegerの+は上書きできないようにしているのかなと思うけど、例外とか飛ばないのか〜〜??
>> class Array >> def +(x) >> 0 >> end >> end => nil >> [] + 1 => 0 >> class Integer >> def +(x) >> 0 >> end >> end => nil >> 1 + 2 => 3
おまけ:irbの動いているインタプリタ自体のクラスを書き換えるので、内容によってはirb自体が落ちる。
>> class String >> def +(x) >> 0 >> end >> end => nil >> "hoge" + 1 /System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/1.8/irb/ruby-lex.rb:191:in `buf_input': private method `split' called for 0:Fixnum (NoMethodError) (irb死亡)
-
-
-
- -
-
-
追記、Integerを継承したFixnumでまた+が定義されているのでIntegerで書き換えてもまた上書きされてしまうだけか。