我想获得包含Enumerable
的所有类的列表。我可以在Ruby中这样做吗?
答案 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