我的问题基本上是这样的:
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_s
或self.name
(或只是to_s
或名称
)。
关于ruby - 如何从扩展类或包含的模块中的类方法访问父类的字符串名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3276158/