2009-08-06 48 views
2

此代碼的工作一體機而不是其他上:不同「高達」的行爲('高達':沒有給出(LocalJumpError)塊)

puts 1.upto(5) 

在工作機器,代碼返回'#'。

在其他計算機上,我得到這個錯誤:

test.rb:1:'高達':沒有給出塊(LocalJumpError) 從test.rb:1個

兩臺機器有軌2.2.2。這段代碼工作的機器有ruby 1.8.7,而這段代碼不工作的兩臺機器分別有ruby 1.8.6和ruby 1.8.7企業版。

回答

4

是的紅寶石1.8.6 upto需要一個塊,而1.8.7塊是沒有必要的。

所以解決方案是升級到1.8.7或使用塊或做1 ... 4.to_a。

+0

我建議使用1..4.to_a。我認爲它更清楚地說明你在做什麼。 – 2009-08-06 17:13:36

1

要獲得在1.8.6中1.8.7+的行爲,你可以這樣做:

require 'enumerator' 
1.enum_for(:upto, 5) 

這適用於所有版本相同,功能上等同於1.upto(5)無塊1.8。 7+(儘管更詳細一些)。

雖然在這個特定的情況下,你當然可以使用一個範圍。