我想获得包含 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/