我只是坚持了一段时间.拿这个基础:
module Top
class Test
end
module Foo
end
end
Run Code Online (Sandbox Code Playgroud)
后来,我可以通过这样做Foo来扩展内部的类Test:
module Top
module Foo
class SomeTest < Test
end
end
end
Run Code Online (Sandbox Code Playgroud)
但是,如果我尝试通过使用::指定模块来最小化缩进:
module Top::Foo
class Failure < Test
end
end
Run Code Online (Sandbox Code Playgroud)
这失败了:
NameError:未初始化的常量Top :: Foo :: Test
这是一个错误,还是Ruby解析变量名称的逻辑结果?
这是一个错误,还是只是一个合乎逻辑的结果
这是一个"怪癖".有人认为这是一个错误.
用于查找未解析常量的父作用域由模块嵌套确定.它恰好发生在您使用时module Top::Foo,它只创建一个嵌套级别而不是两个嵌套级别.注意:
module Top
module Foo
class SomeTest
Module.nesting # => [Top::Foo::SomeTest, Top::Foo, Top]
end
end
end
module Top::Foo
class SomeTest
Module.nesting # => [Top::Foo::SomeTest, Top::Foo]
end
end
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
114 次 |
| 最近记录: |