从孩子的下一步到Ruby中的每个循环

时间:2019-06-11 04:25:10

标签: ruby

我有这段代码:

gates.each do |key, value, temp|
  unless value.class == Output
    temp = value.in1
    gates.each do |k, v|
      if v.out == temp
        value.base_distance += 1
        #do a thing
      end
    end
  end
end

我想发生的是,当到达条件内的#do a thing注释时,它应该跳出内部.each循环并移至外部.each循环的下一个实例,本质上执行{ {1}}。我将如何在条件内进行操作?

1 个答案:

答案 0 :(得分:2)

TL; DR 使用break

这里是MCVE

[1,2].each do |o|
  puts "Outer: #{o}"
  [1,2,3].each do |i|
    break if i.even?
    puts "Inner: #{i}"
  end
end

#⇒ Outer: 1
#  Inner: 1
#  Outer: 2
#  Inner: 1

FWIW,可能会传递一个参数break来从块中返回。在next之后模拟break可能需要这样做:

[1,2].each do |o|
  puts "Outer: #{o}"

  inner =
    [1,2,3].each do |i|
      break :next if i.even?
      puts "Inner: #{i}"
    end
  next if inner == :next
  ...
end