`each`方法返回什么?

时间:2013-03-19 00:41:40

标签: ruby

当我打电话

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

each方法返回什么?一系列对象?或者更一般地说,do ... end阻止了什么?

2 个答案:

答案 0 :(得分:2)

  • each返回接收者,在本例中为@data
  • do ... end是一个区块。

答案 1 :(得分:0)

each方法将为数据中的每个值运行一次块(使用方法yield)。这称为迭代器。对于数组,它将遍历数组中的所有值,对于散列,它将每对(键,值)运行一次。您可以为自己的类定义自己的迭代器。

each的返回值取决于它被调用的对象。在数组上调用时,它将返回数组。

在您的情况下,方法each将对每个值执行一次块,并将每个值作为参数发送到块。

例如 -

a = [1,2,3]
a.each do |n|
    p n
end

相同
p a[0]
p a[1]
p a[2]