在Ruby中查找包含Enumerable模块的所有类

时间:2015-01-02 14:55:59

标签: ruby

我想获得包含Enumerable的所有类的列表。我可以在Ruby中这样做吗?

2 个答案:

答案 0 :(得分:5)

您也可以使用ObjectSpace模块获取所有类和模块的列表。对Enumerable

进行额外检查
require 'set'
enumed = Set.new

ObjectSpace.each_object { |o| enumed.add(o) if [Class, Module].include?(o.class) && o.include?(Enumerable) }
puts enumed.to_a

答案 1 :(得分:3)

您可以使用{{获取当前在对象内存中的所有Module(请注意,这可能包括不再可访问的Module但尚未进行垃圾回收) 1}}和所有其他迭代方法一样ObjectSpace.each_object(Module)返回each_object(它本身混合在Enumerator中),我们可以简单地Enumerable那些select s Module列表中的include?模块Enumerable

ancestors