我有以下代码:
quantity.times do
ids.each_with_index do |id, index|
#a bunch of nested if/thens
if index == 0
do something else
send termination email
end
end
end
基本上,如果发送终止电子邮件,我只希望它发送ONCE,无论ids
数组中有多少项。一旦发送,我想在quantity times
循环中输入下一个数字。当然,如果未发送终止电子邮件并执行其他操作,则可以继续循环遍历ids
数组。
我现在的工作原理,因为我使用index==0
只触发一次电子邮件,但我想进一步简化。
我知道next
方法1,但我明白跳转到内循环的下一次迭代,在这种情况下是ids.each
循环,这不是我的意思想。
答案 0 :(得分:3)
您可能正在寻找中断关键字。
for i in 0..5
if i > 2 then
break
end
puts "Value of local variable is #{i}"
end
这将产生以下结果:
Value of local variable is 0
Value of local variable is 1
Value of local variable is 2
答案 1 :(得分:1)
quantity.times do
ids.each_with_index do |id, index|
#a bunch of nested if/thens
break if send termination email
end
end
希望它有所帮助。
答案 2 :(得分:0)
这可能有点多余,但为了更好地理解你的问题,我做了:
quantity = 2
ids = ["a", "b"]
quantity.times do
puts "outer loop"
ids.each_with_index do |id, index|
puts "inner loop"
# a bunch of nested if/thens
if index == 0
puts "do something else"
puts "send termination email"
break
end
end
end
输出结果为:
outer loop
inner loop
do something else
send termination email
outer loop
inner loop
do something else
send termination email
如果我取消休息,输出将变为:
outer loop
inner loop
do something else
send termination email
inner loop
outer loop
inner loop
do something else
send termination email
inner loop
这有效地节省了一些内循环迭代。这是你在找什么?