Далее от ребенка каждый цикл в Ruby - PullRequest
0 голосов
/ 11 июня 2019

У меня есть этот бит кода:

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, по существу выполняя next , Как бы я сделал это из условного?

1 Ответ

2 голосов
/ 11 июня 2019

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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...