我将一个类分配给一个常量Foo
,然后重新分配Foo
给其他东西:
class Foo; end
Foo = nil
在main
环境中,Foo
指的是新分配的对象:
p Foo # => nil
但是,在某种迭代中,(我不确定是哪个)Foo
指的是前一个对象:
ObjectSpace.each_object(Class).select{|c| c.name == "Foo"}
.each{|c| p c, c.instance_of?(Class)}
# => Foo
true
为什么是这样?