如何只获取没有命名空间的类名

iro*_*and 34 ruby namespaces

这是一个类.

module Foo
  class Bar
  end
end
Run Code Online (Sandbox Code Playgroud)

我希望得到Bar没有的班级名称Foo.

bar = Foo::Bar.new
bar.class.to_s.match('::(.+)$'){ $1 }
Run Code Online (Sandbox Code Playgroud)

我可以通过这段代码得到类名,但我不认为这是获得它的最佳方法.

是否有更好的方法来获取没有命名空间的类的名称?

Uel*_*elb 66

如果您正在使用Rails,您实际上可以demodulize在String类上使用该方法. http://apidock.com/rails/String/demodulize

bar.class.name.demodulize
Run Code Online (Sandbox Code Playgroud)


Tod*_*obs 16

执行此操作的规范方法是调用Object#类Module#name.例如:

bar.class.name.split('::').last
#=> "Bar"
Run Code Online (Sandbox Code Playgroud)