Перезапуск цикла сверху - PullRequest
0 голосов
/ 21 мая 2018

У меня есть следующее:

text_counter = 0
MAXTEXT_COUNTER = 10
puts "hello, this will start"
loop do
  puts "hello"
  text_counter += 1
  sleep(2)
  if text_counter >= MAXTEXT_COUNTER
    break
  end
end
sleep(7200)
print "ended test"

Как только break произошло, как я могу заставить его начать снова с вершины?

Теперь я думаю, что смогувложите этот цикл в цикл until с условием text_counter == 1000.Это сломается, затем спать в течение 2 часов, затем начать снова, пока не достигнет 1000.

Ответы [ 3 ]

0 голосов
/ 22 мая 2018

Похоже, вам нужен цикл внутри цикла, где вы повторяете один N раз, другой M раз:

MAXTEXT_COUNTER = 10

puts "hello, this will start"

loop do
  MAXTEXT_COUNTER.times do
    puts "hello"
    sleep(2)
  end

  print "ended test"
  sleep(7200)
end

Внешний цикл является постоянным.Внутренний выполняется определенное количество раз и останавливается с использованием метода times.

0 голосов
/ 22 мая 2018

Существует ключевое слово retry , которое повторяет цикл сверху, как раз то, что вы просили.

Или вы можете заключить свой цикл в метод и постоянно вызывать этот метод.

0 голосов
/ 22 мая 2018

Вы ищете следующий

Он работает аналогично break, но возвращает управление обратно в начало цикла.Отлично подходит для создания плоского потока управления.

Например

0.upto(100) do |i|
  if i % 7 == 0
    puts "#{i} is a multiple of 7"
    next
  end

  puts i
end
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...