Ruby 枚举器 class

Ruby Enumerator class

我读过 Enumerator class。我不能完全理解这里发生了什么:

[0, 1].each { |i| puts i }

单独 [0, 1].each returns => #<Enumerator: [0, 1]:each>

所以问题是我们是将块定位到数组的 each 方法还是枚举器 class 的实例?

您不能将参数(包括块)传递给对象。唯一可以接受参数(包括块)的是消息发送和块。所以,显然,它必须是前者。

与许多其他方法一样,Array#each returns and Enumerator 如果未传递块,但它遍历数组并在传递块时为每个项目调用块。

块为每个数组项返回的值是传递块时Array#each返回的数组的元素。

为了回答你的问题,块和 Enumerator 从未见过面。