Создание бесконечной петли

Я пытаюсь создать бесконечный цикл, где блок кода будет выполняться навсегда.

Вся документация по циклам, которую я нашел, предупреждает о создании бесконечного цикла, но нет примеров рабочего.

Если у меня есть блок кода:

{ puts "foo"  
  puts "bar"  
  sleep 300 }

Как я буду продолжать этот блок навсегда?

Ответ 1

loop do
  puts 'foo'  
  puts 'bar'  
  sleep 300
end

Ответ 2

Вот несколько примеров бесконечных циклов, использующих блоки.

Loop
loop do
  puts "foo"  
  puts "bar"  
  sleep 300
end

Хотя

while true
  puts "foo"  
  puts "bar"  
  sleep 300
end

До

until false
  puts "foo"  
  puts "bar"  
  sleep 300
end

Lambda

-> { puts "foo" ; puts "bar" ; sleep 300}.call until false

Существует также несколько вариантов лямбда-выражений, использующих нестабильный лямбда-синтаксис. Также мы могли бы использовать Proc.

begin..end

begin
  puts "foo"  
  puts "bar"
  sleep 300
end while true

Ответ 3

Я пытался все, но с входным циклом работал только как бесконечный цикл, пока я не получу правильный ввод:

loop do
    a = gets.to_i
    if (a >= 2)
        break
    else 
        puts "Invalid Input, Please enter a correct Value >=2: "
    end
end

Ответ 4

1) Пока цикл:

While 1==1 # As the condition 1 is equal to 1 is true, it always runs.
    puts "foo"  
    puts "bar"  
    sleep 300
   end

2) Рекурсия:

    def infiniteLoop # Using recursion concept
      puts "foo"
      puts "bar"
      sleep 300
      infiniteLoop #Calling this method again    
    end

EDIT: Я думал, что это сработает, но, как сказал Габриэль, мы получим SystemStackError.

3) Петля

   loop do
    puts "foo"
    ....
   end

4) Использование, если

unless 1 == 2  # Unless 1 is equal to 2 , it keeps running
 puts "foo"
 ...
end