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

最佳答案

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

ObjectSpace.each_object(Module).select {|m| m.include?(Enumerable) }
# => [Process::Tms, Enumerator::Generator, Enumerator::Lazy, Enumerator,
#     ObjectSpace::WeakMap, Dir, File, ARGF.class, IO, Range, Struct, Hash,
#     Array]

关于ruby - 在 Ruby 中查找包含 Enumerable 模块的所有类,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/27744041/

10-12 05:16