我读过有关Enumerator类的内容。我无法完全理解这里发生了什么:
[0, 1].each { |i| puts i }
单独[0, 1].each
返回=> #<Enumerator: [0, 1]:each>
所以问题是我们是否正在阻塞数组的each
方法或Enumerator类的实例?
答案 0 :(得分:3)
正如许多其他方法一样,Array#each
返回Enumerator
如果没有传递一个块,但它遍历数组并在传递一个块时为每个项调用块。
每个数组项的块返回的值是传递块时Array#each
返回的数组的元素。
要回答您的问题,该块和Enumerator
从未见过。
答案 1 :(得分:0)
您无法将参数(包括块)传递给对象。唯一可以带参数的东西(包括块)是消息发送和块。所以,显然,它必须是前者。