我试图创建一个无限循环,其中一段代码将永远执行。
我发现的所有循环文档都警告不要创建一个无限循环,但没有工作示例。
如果我有一段代码:
{ puts "foo"
puts "bar"
sleep 300 }
我将如何永远地运行这个区块?
答案 0 :(得分:26)
loop do
puts 'foo'
puts 'bar'
sleep 300
end
答案 1 :(得分:14)
以下是使用块的无限循环的一些示例。
循环
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
lambda也有一些变体,使用非stabby lambda语法。我们也可以使用Proc。
BEGIN..END
begin
puts "foo"
puts "bar"
sleep 300
end while false
答案 2 :(得分:1)
除了输入循环外,我尝试了所有其他操作,直到获得有效输入为止,它只能作为无限循环:
shared_ptr
答案 3 :(得分:-3)
1) while循环:
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
编辑:我认为这会有效,但正如Gabriel所说,我们会得到SystemStackError。
3)循环
loop do
puts "foo"
....
end
4)使用除非
unless 1 == 2 # Unless 1 is equal to 2 , it keeps running
puts "foo"
...
end