class Object
alias :old_initialize :initialize
def initialize
old_initialize
print "AN OBJECT WAS CREATED"
end
end
class Test
end
test = Test.new
这可以按预期工作,打印"AN OBJECT WAS CREATED"
.
但是如果你使用像Array
, Hash
, or之类的核心类String
,什么都不会发生:
array = Array.new
hash = Hash.new
string = String.new
这是为什么?我原以为它们都是 的子类Object
,因此对其进行任何更改都会起作用。但显然它只适用于我的自定义类。
为了让它更混乱,我意识到正如警告所说,我的修改应该创建一个无限循环,因为"AN OBJECT WAS CREATED"
基本上是创建一个新String
实例 - 但没有循环发生。现在我更加困惑了。
红宝石 1.8.7