我将一个类分配给一个常量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
为什么是这样?