查找名称与字符串匹配的所有类

Men*_*bon 2 ruby metaprogramming

我想找到名称与字符串匹配的所有ruby类(忽略大小写).这意味着该字符串应该是类名的子字符串.
所以当你搜索'stri'时,你应该得到这个类String(等等).

你知道一种方便而且效率不高的方法吗?

saw*_*awa 5

ObjectSpace.each_object(Class)
.select{|klass| klass.name.downcase.include?("stri".downcase)}

# => [
  String,
  RubyToken::TkDXSTRING,
  RubyToken::TkDSTRING,
  RubyToken::TkXSTRING,
  RubyToken::TkSTRING
]
Run Code Online (Sandbox Code Playgroud)

  • `类Foo; 结束; Foo =零; ObjectSpace.each_object(Class).select {| c | c.name =='Foo'}#=> [Foo]`我甚至试过在那里扔一个`GC.start`.只要你实际上没有*内存不足,GC就不会运行,仍然可以找到该类. (2认同)