在属于另一个模块的类中包含 Singleton 模块时出现 ruby​​ NameError

发布于 2024-10-17 20:17:55 字数 480 浏览 4 评论 0原文

当我尝试将 Singleton 模块包含在本身存在于模块中的类中时,它不起作用。这是一个例子:

require 'singleton'

module SomeModule
end

class SomeModule::SomeClass
  include Singleton

  def initialize
    @some_variable = 1
  end

  def output
    puts @some_variable
  end
end

SomeClass.instance.output

我得到的错误是:

未初始化的常量 对象::SomeClass(名称错误)

我不确定如何告诉 Singleton 模块查找 SomeModule::SomeClass 而不是 Object::SomeClass

When I try to include the Singleton module in a class that itself exists in a module it does not work. Here's an example:

require 'singleton'

module SomeModule
end

class SomeModule::SomeClass
  include Singleton

  def initialize
    @some_variable = 1
  end

  def output
    puts @some_variable
  end
end

SomeClass.instance.output

and the error I get is:

uninitialized constant
Object::SomeClass (NameError)

I'm not sure how to tell the Singleton module to look for SomeModule::SomeClass not Object::SomeClass

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

谁人与我共长歌 2024-10-24 20:17:55

问题是您在调用 SomeClass 类时没有前置模块名称。添加模块名称以使其正常工作:

SomeModule::SomeClass.instance.output

The problem is you are calling the SomeClass class without the prepended module name. Add the module name to get it to work:

SomeModule::SomeClass.instance.output
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文