我已经替换了 String 类中的 to_s 方法,但正如我所见,当我运行时puts "string"
,ruby 调用的不是 to_s 方法。
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
如何替换这个隐式初始化?