Ответ 1
loop do
puts 'foo'
puts 'bar'
sleep 300
end
Я пытаюсь создать бесконечный цикл, где блок кода будет выполняться навсегда.
Вся документация по циклам, которую я нашел, предупреждает о создании бесконечного цикла, но нет примеров рабочего.
Если у меня есть блок кода:
{ puts "foo"
puts "bar"
sleep 300 }
Как я буду продолжать этот блок навсегда?
loop do
puts 'foo'
puts 'bar'
sleep 300
end
Вот несколько примеров бесконечных циклов, использующих блоки.
Looploop 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
Я пытался все, но с входным циклом работал только как бесконечный цикл, пока я не получу правильный ввод:
loop do
a = gets.to_i
if (a >= 2)
break
else
puts "Invalid Input, Please enter a correct Value >=2: "
end
end
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