本部落格系列翻譯自 Bigbinary 的 Ruby 2.6 系列, 已得到作者允許。Ruby 2.6.0-preview2 現已釋出。
在Ruby 2.6 之前,如果你想要使用帶上索引(index)的無限迴圈,我們得用 Float::INFINITY 然後用 #upto 方法 或者實現一個Range 例項,或者用 Numeric#step 方法。
Ruby 2.5.0
irb> (1..Float::INFINITY).each do |n|
irb* # logic goes here
irb> end
複製程式碼
或者
irb> 1.step.each do |n|
irb* # logic goes here
irb> end
複製程式碼
Ruby 2.6.0
Ruby 2.6 讓Range 中第二個引數變成可選的,讓無限迴圈更具有可讀性(並沒有)。Ruby 讓第二個引數可以是nil,所以 (0..) 和 (0..nil) 在Ruby 2.6 是等價的了。
irb> (0..).each do |n|
irb* # logic goes here
irb> end
複製程式碼
irb> (0..nil).size
=> Infinity
irb> (0..).size
=> Infinity
複製程式碼
如果是Ruby 2.5, (0..nil) 這樣會丟擲 ArgumentError。
irb> (0..nil)
ArgumentError (bad value for range)
複製程式碼