最后是否可以猴子修补方法?猴子修补红宝石的方法
我想猴子补丁String.upcase!
,但我不知道如何实现这一点。
问题是我想更改原始字符串对象。
下面是一个例子:
class String
def upcase!
self.mb_chars.upcase.to_s
end
end
现在,如果我在控制台键入和尝试,这是行不通的:
[1] pry(main)> asd="asd"
=> "asd"
[2] pry(main)> asd.upcase
=> "ASD"
[3] pry(main)> asd
=> "asd"
[4] pry(main)> asd.upcase!
=> "ASD"
[5] pry(main)> asd
=> "asd"
对于没有爆炸声的方法来说,这并没有什么不同 –
警告:如果这是你的意图,那么你的责任是让你的方法修改调用者。但是,这是没有什么不同的是,当你在没有爆炸的情况下使用相同的方法修补时,你不必修改调用者。 –