如何跳过当前循环的n次迭代?

时间:2016-06-30 06:28:14

标签: ruby-on-rails ruby

myDerived::myDerived() : myBase(), myType( mySubType::type1 ) {} 跳转到下一次迭代,但我需要一些方法来跳转 n 迭代。例如,如果我调用虚构的next,它会跳过两次迭代。可以这样做吗?

我的项目是用Rails编写的,但这是一个Ruby问题 - 这里代表我的项目:

next(2)

但是,一旦answer_set_one.each |answer_one| answer_set_two.each |answer_two| #in here, if answer_two and answer_one matches, do something end end 与任何answer_two匹配,就无法与任何其他answer_one匹配。

4 个答案:

答案 0 :(得分:1)

应该使用休息。在回复上面的注释时,break语句不会退出这两个循环。试试这个要清楚:

[1,2,3].each do |x|
  p x
  %w(a b).each do |y|
    p y
    break if y == 'a'
  end
end;

编辑:在进一步澄清后,这应该做你想要的吗?

answer_set_one.each |answer_one| 
  matched = false
  answer_set_two.each |answer_two|
    next if matched
    matched = true if answer_two == answer_one
    # do whatever you still need to do here
  end
end

答案 1 :(得分:0)

你能在这里写下你的循环吗?

例如,在此循环中

(1..10).each do |a|
 next if a.even?
 puts a
end

它打印出1,3,5,7,9所以基本上它会跳过2次迭代

如果适合您的循环,您可以使用next if语句

答案 2 :(得分:0)

为什么不使用班次?如下(跳过3个元素):

arr = [1,2,3,4,5,6,7,8,9,10,11,12]
skip = 3

arr.each do |x|
  p x
  (skip-1).times {arr.shift}
end

$ ruby test.rb
1
4
7
10

答案 3 :(得分:0)

关注您的代码,请查看以下内容:

answer_set_one = (1..9).to_a
answer_set_two = (1..9).to_a

answer_set_one.each do |answer_one| 
  answer_set_two.each do |answer_two|
    #in here, if answer_two and answer_one matches, do something
    puts answer_one
    break if answer_two == answer_one
  end
end

当它发现answer_one == answer_two它停止寻找另一个答案时。