限制块循环?

时间:2013-04-17 00:04:02

标签: ruby loops block

我有以下代码......

parser = AppleEpf::Parser.new('tmp/incremental/itunes20130410/application')
parser.process_rows { |app|
  Resque.enqueue(AddApp, app)
}

现在,该文件(tmp/incremental/itunes...)中有超过90,000行。出于测试目的,将process_rows块调用限制为几行(比如说... 100)会很好。

有没有办法限制块中的循环?

供参考,这是gem中的process_rows方法:

def process_rows(&block)
  File.foreach( @filename, RECORD_SEPARATOR ) do |line|
    unless line[0].chr == COMMENT_CHAR
      line = line.chomp( RECORD_SEPARATOR )
      block.call( line.split( FIELD_SEPARATOR, -1) ) if block_given?
    end
  end
end

2 个答案:

答案 0 :(得分:2)

您可能正在寻找break命令。

在任何Ruby循环中,您可以将此指令停止执行并返回某些(或不返回),因此您可以像以下一样使用它:

loop do
  do_something_great
  break if some_condition
end

控制你的执行。

随时欢迎指向ruby-doc的链接:http://ruby-doc.org/docs/keywords/1.9/Object.html#method-i-break

答案 1 :(得分:1)

我认为您正在寻找break关键字。