来自其中定义的类的模块的 Ruby 名称

标签 ruby

我有这样的 ruby​​ 代码:

module Hello

  class Hi

    def initialize()
      puts self.module.name //Should print "Hello"
    end

  end
end

如何获取包含该类的模块的名称? 谢谢

最佳答案

您可以使用Module::nesting来做到这一点方法:

nesting → array

Returns the list of Modules nested at the point of call.

module M
  class C
    Module.nesting[1] # => M
  end
end

如果你想从实例方法中获取这个值,你可以将它分配给类变量:

module Hello    
  class Hi
    @@parent = Module.nesting[1]

    def initialize()
      puts @@parent # => Hello
    end
  end
end

关于来自其中定义的类的模块的 Ruby 名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8990368/

相关文章:

ruby - 比较 Rails 中两个对象数组的最佳方法

ruby - 更新 gem 时 Docker 包安装缓存问题

ruby - HTTP/1.1 1 秒延迟 100 继续 ruby​​(puma、unicorn、webrick)

c - 使用 RubyFFI 从 ruby​​ 停止具有无限循环的 c 函数

mysql - 如何关联已连接表中的记录? - ruby on Rails

ruby - rails 中 Rubocop 哈希参数周围的冗余大括号

ruby-on-rails - Rails Associations 的更新方法是什么?

arrays - 为什么我不能将数字作为字符串更改为整数?

ruby-on-rails - 如何从任何文件夹查看 Rails 中的文件列表,外部 Rails.root - Windows

ruby -/在 Ruby 中是什么意思?