String クラス内のメソッド to_s を置き換えましたが、実行するputs "string"
と、to_s メソッドではなく ruby が呼び出されることがわかります。
def add_method(cls)
cls.class_eval do
def initialize
self.new('you hacked')
end
def to_s
'you hacked'
end
end
end
add_method String
puts "zxzxzzx"
puts "zxzxzzx".to_s
出力:
>> zxzxzzx
>> you hacked
この暗黙の初期化を置き換える方法は?