我有这段代码:
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}}。我将如何在条件内进行操作?
答案 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