Ruby 'each'方法返回什么?

Ruby 'each'方法返回什么?,ruby,Ruby,当我打电话时 @data.each do |d| some code here end 每个方法返回什么?一组物体?或者更一般地说,做什么…结束块执行什么?它迭代可枚举对象的成员。因此,如果@data是一个数组,它将以d的形式一次返回一个数组元素。具体行为取决于对象的类型。见 Books.all返回一个对象,该对象虽然不是数组,但在本例中的行为与数组类似。 每个返回接收器,在本例中为@data do结束是一个块 对于数据中的每个值,每个方法将运行一次块(使用方法产生)。这称为迭代器。对于数

当我打电话时

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

每个方法返回什么?一组物体?或者更一般地说,
做什么
结束
块执行什么?

它迭代可枚举对象的成员。因此,如果
@data
是一个数组,它将以
d
的形式一次返回一个数组元素。具体行为取决于对象的类型。见

Books.all
返回一个对象,该对象虽然不是数组,但在本例中的行为与数组类似。

  • 每个
    返回接收器,在本例中为
    @data
  • do
    <代码>结束
是一个块
    对于数据中的每个值,
    每个
    方法将运行一次块(使用方法
    产生
    )。这称为迭代器。对于数组,它将迭代数组中的所有值;对于散列,它将每对(键、值)运行一次。您可以为自己的类定义自己的迭代器

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

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

    比如说-

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

    p a[0]
    p a[1]
    p a[2]
    

    说。。什么?这是控制器的一个实例变量。例如,@books=Book.all我不知道它的具体结构,所以你最好弄清楚。。我的投票并不是一个真正的问题,因为一旦知道了类型,就只有“数组是什么?”或“散列是什么?”或“x是什么?”这些内容包含在适当的参考资料中。(它来自,嗯,也有相关的文档。)另外,
    @data.class.name
    的快速日志将显示它是什么类。Ruby甚至不用打开文档就可以告诉你很多事情。