为什么重新打开嵌套模块会根据使用的语法给出不同的结果?例如,这很好用:
module A
module E
end
end
module A
module E
def E.e
end
end
end
但是这个:
module A
module E
end
end
module A::E
def E.e
end
end
给出错误:
reopen.rb:6:in `<module:E>': uninitialized constant A::E::E (NameError)
from reopen.rb:5:in `<main>'
(在有人指出这一点之前,一种解决方法是self
在定义 Ee 时使用而不是模块名称,但这并不是本文的重点。)