module Hints
module Designer
def self.message
"Hello, World!"
end
end
end
有没有办法使用以下代码来访问消息方法?
p Hints.Designer.message
而不是
p Hints::Designer.message
答案 0 :(得分:5)
句号.
仅用于访问方法。
双冒号::
用于表示名称空间。
模块和类可以互相嵌套。这将为嵌套类创建名称空间。 (从技术上讲,Module是Class的一个实例。)因此,无论Hints或Designer是类还是模块,以下内容都是正确的。
Hints::Designer.message
您可以在命令行上打开irb
来尝试自己。 Hints.Designer.message
说NoMethodError: undefined method 'Designer' for Hints:Module
。
更新 (因为我无权发表评论......):
虽然Ruby中的许多东西都可以被覆盖(“猴子修补”),但基本的操作员却不能。 ::
是一种基本语言功能,它不应该是可自定义的(为了防止大混乱;))。
答案 1 :(得分:1)
您可以使用点来访问message
方法,但不能使用它来访问Designer
模块,因为Designer
它不是方法(而是常量)。 Dot仅用于调用方法。