【发布时间】:2013-10-14 15:29:09
【问题描述】:
是否可以在结尾处用 bang 对方法进行猴子修补?
我想对 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"
【问题讨论】:
-
这和最后没有爆炸的方法没什么不同
-
警告:你的有责任让方法修改调用者,如果这是你想要的。但这与您有责任不修改调用者时没有什么不同。
标签: ruby monkeypatching