Ruby Enumerator类

时间:2017-10-21 17:01:10

标签: ruby enumerator

我读过有关Enumerator类的内容。我无法完全理解这里发生了什么:

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

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

所以问题是我们是否正在阻塞数组的each方法或Enumerator类的实例?

2 个答案:

答案 0 :(得分:3)

正如许多其他方法一样,Array#each返回Enumerator如果没有传递一个块,但它遍历数组并在传递一个块时为每个项调用块。

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

要回答您的问题,该块和Enumerator从未见过。

答案 1 :(得分:0)

您无法将参数(包括块)传递给对象。唯一可以带参数的东西(包括块)是消息发送和块。所以,显然,它必须是前者。