为什么这个Ruby代码打印345?

时间:2013-12-10 11:51:54

标签: ruby

i=0
loop do
  i += 1
  next if i < 3
  print i
  break if i > 4
end

产生345这没有意义,因为当我达到3时,应该评估next表达式,再次进入循环。合乎逻辑的是只打印4.为什么这段代码按照它的方式工作?

1 个答案:

答案 0 :(得分:4)

如果您将在纸上跟踪此代码,您将看到:

  • i == 0时:是0 < 3?是=&gt; next
  • i == 1时:是1 < 3?是=&gt; next
  • i == 2时:是2 < 3?是=&gt; next
  • i == 3时:是3 < 3? no =&gt; print 3;是3 > 4
  • i == 4时:是4 < 3? no =&gt; print 4;是4 > 4
  • i == 5时:是5 < 3? no =&gt; print 5;是5 > 4是=&gt; break