ruby - 如何从扩展类或包含的模块中的类方法访问父类的字符串名称

标签 ruby class module object oop

我的问题基本上是这样的:

module Foo
  class Bar
    def self.who
      self.class.to_s
    end
  end
end

class World < Foo::Bar

end

当我调用 World.who 时,我没有得到 "World" 结果,而是得到了 "Class"。一些快速的谷歌搜索没有产生任何有用的东西,因此我在这里希望有人知道如何获得正确的类名:)

最佳答案

如果您调用 foo.bar,则在 bar 方法内 self 的值将为 foo >。因此,当您调用 World.who 时,who 中的 self 的值为 World。由于 World 是一个类,World.class 将返回 Class,所以这就是您得到的。

要返回“World”,只需调用self.to_sself.name(或只是to_s名称)。

关于ruby - 如何从扩展类或包含的模块中的类方法访问父类的字符串名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3276158/

相关文章:

module - ocaml 模块和程序位于同一文件中

ruby - 有没有办法在葡萄上修改或发送自定义 header ?

ruby - 使 emacs 自动完成 Ruby 方法

class - Dart flutter : The default value of an optional parameter must be constant when setting a default value to class constructor

class - VB6中对象的赋值

javascript - SVG - getElementsByClassName

MySQL Workbench 的 Python 模块不工作

c++ - Rcpp 导出的模块未公开

ruby-on-rails - Ruby API 请求中的 Yahoo Oauth - 签名无效

ruby-on-rails - Rails 出了点问题……(菜鸟)