4
我做了一類具有恆定&的方法:爲什麼Ruby class_eval從範圍中刪除常量?
class A
FOO = 'hello'
def bar
puts FOO
end
end
A.new.bar
=> 'hello'
而且一切正常。但是當我這樣做:
A.class_eval do
def bar
puts FOO
end
end
A.new.bar
NameError: uninitialized constant FOO
怪誕......爲了解決這個問題我做:
A.class_eval do
def bar
puts self.class::FOO
end
end
爲什麼會這樣有什麼好解釋?