第4行& 5让我悲伤:
1 def test_break_statement
2 i = 1
3 result = 1
4 while true
5 break unless i <= 10
6 result = result * i
7 i += 1
8 end
9 assert_equal 3628800, result
10 end
我不确定在while true
语句中需要保持什么,但我相信它是遵循它的代码。这导致了进一步的混乱,因为我正在读这句话:
break unless i <= 10
不小于或等于10,则 i
为中断。此代码执行的步骤是什么,即while和break语句如何相互作用。我想我差不多了,但不能把这个过程放在我脑海里。感谢。
答案 0 :(得分:3)
当我大于10时,代码将突破无限循环。 但是我不确定为什么在while语句中没有检查条件。
编辑:如果我读取方法名称,我就会理解为什么不直接使用while语句检查条件。该方法的目的是测试break语句。
答案 1 :(得分:2)
while true
是一个无限循环。 break
执行后会立即退出,继续执行第一行(assert_equal...
)。
在这种特定情况下(while
和break unless
之间没有任何干预),它等同于:
while i <= 10
result = result * i
i += 1
end
答案 2 :(得分:2)
while
语句测试单词while.
之后的任何内容如果跟在它们之后的表达式是true
,它们会在循环中执行代码。如果表达式为false,则表示不是。
因此,正如其他海报所指出的那样,while true
将始终在循环中执行代码。幸运的是,对于您的代码,循环中有一个break
语句。如果没有,循环将永远运行,你必须杀死运行程序的进程。
在您的代码示例中,break
关键字后跟unless
,这意味着break
循环unless
后面的表达式为真。当我大于10时,你的代码将会脱离循环。
答案 3 :(得分:1)
while true
这是无限循环。break unless i <= 10
与break if i > 10
相同,如果i
小于或等于10