gpt4 book ai didi

访问模块和类元素的 Ruby 风格

转载 作者:太空宇宙 更新时间:2023-11-03 17:27:37 26 4
gpt4 key购买 nike

module Hints
module Designer
def self.message
"Hello, World!"
end
end
end

有什么方法可以使用下面的代码来访问消息方法吗?

p Hints.Designer.message

代替

p Hints::Designer.message

最佳答案

句点. 仅用于访问方法。

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

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

Hints::Designer.message

您可以通过在命令行中打开 irb 来尝试一下。 Hints.Designer.message 表示 NoMethodError: undefined method 'Designer' for Hints:Module

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

虽然 Ruby 中的许多东西都可以被覆盖(“猴子补丁”),但基本运算符不能。 :: 是一个基本的语言特性,它是而且不应该是可定制的(为了防止出现大困惑;))

关于访问模块和类元素的 Ruby 风格,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3247831/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com