sep*_*p2k 61
Foo.constants
返回所有常量Foo.这包括但不限于类名.如果您只想要类名,则可以使用
Foo.constants.select {|c| Foo.const_get(c).is_a? Class}
如果您需要类和模块名称,则可以使用is_a? Module而不是is_a? Class.
Jör*_*tag 35
如果你想要自己的类,而不是常量的名称,你可以这样做:
Foo.constants.map(&Foo.method(:const_get)).grep(Class)
pis*_*ruk 14
这将仅返回给定命名空间下的已加载常量,因为ruby使用延迟加载方法.所以,如果你输入
Foo.constants.select {|c| Foo.const_get(c).is_a? Class}
你会得到
[]
但输入后:
Foo::Bar
你会得到
[:Bar]
小智 12
总之没有.但是,您可以显示已加载的所有类.首先,您必须在命名空间中加载所有类文件:
Dir["#{File.dirname(__FILE__)}/lib/foo/*.rb"].each {|file| load file}
然后你可以使用像JörgWMittag这样的方法来列出类
Foo.constants.map(Foo.method(:const_get)).grep的(类)
| 归档时间: | 
 | 
| 查看次数: | 17715 次 | 
| 最近记录: |