Enumerator类的文档页面上列出了以下方法:
::new#each#each_with_index#each_with_object#feed#inspect#next#next_values#peek#peek_values#rewind#size#with_index#with_object但是,当我在irb收到以下内容时false:
>> Enumerator.methods.include?(:next)
false
Run Code Online (Sandbox Code Playgroud)
这是因为即使该方法可以用于此类的实例,但该方法并未在类本身上显式定义,即它是继承的?考虑到这一点,我还检查了Enumerator超类,发现它们也不包含此方法:
>> Enumerator.superclass.methods.include?(:next)
false
>> Enumerator.superclass.superclass.methods.include?(:next)
false
Run Code Online (Sandbox Code Playgroud)
我确定我忽略了一些非常基本的东西。
#next是 Enumerator 类的实例方法。使用Enumerator.instance_methods.include?(:next)将返回true