Iterator.each:为什么这样做

时间:2011-09-21 22:33:01

标签: ruby syntax ruby-on-rails-3.1

当我遇到一些奇怪的语法时,我在一个项目中重构了一些代码。我确认它已经在文件中,因为它是第一次创建的,并且正在调用代码。

worksheet.each 1 do |row|
  Dashboard::LocalizedMessagingField.create({blah blah blah})
end

当我在irb中运行类似下面的内容时,每个人都会抱怨1个0参数。

[1,2,3].each 1 do |i|
  puts i
end 

为什么它在RoR应用程序中有效?以前有人见过这样的东西吗?

1 个答案:

答案 0 :(得分:1)

经过一番挖掘,我找到了答案。我们安装了Spreadsheet gem,它提供了一个每个方法,它接受一个参数来跳过电子表格的前n行。

def each skip=dimensions[0], &block
  skip.upto(dimensions[1] - 1) do |idx|
    block.call row(idx)
  end
end