该next
语句用于跳过循环的一部分并继续循环的下一次迭代。它可以与for
和while
语句结合使用。
如果在评估某些条件后有一段复杂的代码,我见过人们使用下一个,即
next if @state!=:some_state
# some long complicated code
现在我在这里玩了next
如下IRB
:
n = 1
loop do
n = n + 1
next unless n == 10
print "Good"
break
end
# Good=> nil
上面那位明白了。很清楚。
n = 1
#=> 1
loop do
print "#{n}"
n = n + 1
next puts "hi" unless n == 5
p "good"
break
end
#1hi
#2hi
#3hi
#4"good"
#=> nil
在上面的代码中,无法理解行puts "hi"
和unless n == 5
执行的顺序。哪个先执行?
下面的一个导致infinite Loop
.
n = 1
#=> 1
loop do
print "#{n}"
n = n + 1
next puts "hi"; 2 + 3 unless n == 5
p "good"
break
end
而这个很好:
n = 1
#=> 1
loop do
print "#{n}"
n = n + 1
next puts "hi", 2 + 3 unless n == 5
p "good"
break
end
#1hi
#5
#2hi
#5
#3hi
#5
#4"good"
#=> nil
请在这里帮助我理解 - 这个是如何解决这个forever
循环的?