我指定一個類來恆定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
這是爲什麼?
這來自JörgW Mittag對我對[這個問題]的回答的評論(http://stackoverflow.com/questions/16523676)。 – sawa 2013-05-13 15:18:50