-1

当我打电话

@data.each do |d|
  some code here
end

each方法返回什么?对象数组?或者更一般地说,do... endblock 需要什么?

4

3 回答 3

2

它遍历可枚举对象的成员。因此,如果@data是一个数组,它将一次返回一个数组的元素作为d. 确切的行为取决于对象的类型。查看文档

Books.all返回一个对象,虽然它不是一个数组,但在这种情况下表现得像一个。

于 2013-03-19T00:45:31.593 回答
2
  • each returns the receiver, in this case @data.
  • The do ... end is a block.
于 2013-03-19T01:00:58.580 回答
0

该方法将为数据中的每个值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]
于 2013-03-19T01:42:39.747 回答