English 中文(简体)
内核循环方法需要使用 "do"。分号不允许使用?
原标题:
  • 时间:2009-03-13 03:54:53
  •  标签:

对于某些结构,我可以选择使用分号或者do关键字来标识语句的结束,就像下面的until示例一样。

until x == 100 do puts x; x+=1 end 

until x == 100; puts x; x+=1 end 

但是用 Kernel.loop 是不可能的。

x=0    
loop do puts x; x+=1; break if x == 100 end

x=0    
loop; puts x; x+=1; break if x == 100 end # => error

这是为什么呢?

最佳回答
  • loop is a method (in Kernel) that really requires a block with do...end or { }.
  • while and until are statements (like if), and do not expect a block. The do keyword is optional, but it does not denote a block (e.g. while x == 100 { puts x; x+=1; } will fail miserably, whereas loop { puts x; x+=1; break if x == 100 } will work just fine.)

所以,在这两种情况下,do的含义也不同。在loop(和其他方法)的情况下,它确实表示块;在whileuntil等情况下,它只是语法糖(就像在if后面的then一样)。不要被误导。

问题回答

暂无回答




相关问题
热门标签