Ruby样式访问模块和类的元素

Jam*_*sir 1 ruby

module Hints
    module Designer
        def self.message
            "Hello, World!"
        end
    end
end
Run Code Online (Sandbox Code Playgroud)

有没有办法使用以下代码来访问消息方法?

p Hints.Designer.message
Run Code Online (Sandbox Code Playgroud)

代替

p Hints::Designer.message
Run Code Online (Sandbox Code Playgroud)

cri*_*spy 5

该期间.仅用于访问方法.

双冒号::用于指示命名空间.

模块和类都可以相互嵌套.这将为嵌套类创建名称空间.(从技术上讲,Module是Class的一个实例.)因此,无论Hints或Designer是类还是模块,以下内容都是正确的.

Hints::Designer.message
Run Code Online (Sandbox Code Playgroud)

您可以通过irb在命令行上打开来尝试自己.Hints.Designer.messageNoMethodError: undefined method 'Designer' for Hints:Module.

更新 (因为我不允许发表评论......):

虽然Ruby中的许多东西都可以被覆盖("猴子修补"),但基本的操作员却不能.::是一个基本的语言功能,不应该是可定制的(为了防止大的混乱;)).