当我打电话
@data.each do |d|
some code here
end
该each
方法返回什么?对象数组?或者更一般地说,do
... end
block 需要什么?
它遍历可枚举对象的成员。因此,如果@data
是一个数组,它将一次返回一个数组的元素作为d
. 确切的行为取决于对象的类型。查看文档
Books.all
返回一个对象,虽然它不是一个数组,但在这种情况下表现得像一个。
each
returns the receiver, in this case @data
.do
... end
is a block.该方法将为数据中的每个值each
运行一次块(使用方法)。yield
这称为迭代器。对于数组,它将遍历数组中的所有值,对于散列,它将每对 (key,value) 运行一次。您可以为自己的类定义自己的迭代器。
的返回值each
取决于它被调用的对象。在数组上调用时,它将返回数组。
在您的情况下,该方法each
将为每个值执行一次块,并将每个值作为参数发送到块。
例如-
a = [1,2,3]
a.each do |n|
p n
end
和
p a[0]
p a[1]
p a[2]