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
从未见过面。
我读过 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
从未见过面。