当前位置:  开发笔记 > 编程语言 > 正文

Kernel.loop方法需要'do'.不允许使用分号?

如何解决《Kernel.loop方法需要'do'.不允许使用分号?》经验,为你挑选了1个好方法。

对于某些构造,我可以选择使用分号或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

这有什么原因吗?



1> vladr..:

loop是一个方法(in Kernel),真正需要一个块do...end{ }.

while并且until是陈述(如if),并且不要指望一个块.该do关键字是可选的,但它并不表示一个块(例如while x == 100 { puts x; x+=1; }就会失败,而loop { puts x; x+=1; break if x == 100 }将工作得很好.)

因此,do在两种情况下意味着不同的东西.在loop(和其他方法)的情况下,它实际上表示一个块; 在等等的情况下while,until它只是语法糖(就像then之后的那样if.)不要被误导.

推荐阅读
勤奋的瞌睡猪_715
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有