Ruby:如何'下一步'外部循环?

时间:2010-03-08 19:14:19

标签: ruby iteration

file.each_line do |line|
  #skip the first one/not a user
  3.times { next } if first == 1
  first = 2
end

我怎样才能获得'next'到“next”的每个迭代次序,而不是3次迭代?另外,我怎么写这个看起来更好(即:第一个== 1看起来很糟糕)

4 个答案:

答案 0 :(得分:6)

您可以使用drop方法来删除前几个元素:

File.open('bar').each_line.drop(3).each do |line|
  puts line
end

答案 1 :(得分:1)

你的内部循环可以在它break_out = true之前设置一个标志变量(比如break),你可以在内循环出来后立即检查该变量。如果检测到标志已设置,则跳出外循环。

更有可能的是,有一种更好的方法来构建代码以执行您想要的操作。你只是想跳过前三行吗?如果是这样,请尝试以下方法:

line_count = 0
file.each_line do |line|
  #skip the first one/not a user
  line_count += 1
  next if (line_count <= 3 && first == 1)
  first = 2
end

答案 2 :(得分:0)

我认为你需要在那里添加另一个if语句

file.each_line do |line|
  #skip the first one/not a user
  3.times { next } if first == 1
  break if something
  first = 2
end

答案 3 :(得分:0)

如果文件不是太大,你可以

file.read.split("\n")[3..-1].each do |line_you_want|
  puts line_you_want
end