此代码适用于一台计算机,但不适用于另一台计算机:
puts 1.upto(5)
在工作机器上,代码返回'#'。
在另一台机器上,我收到此错误:
test.rb:1:在`upto'中:没有给出块(LocalJumpError) 来自test.rb:1
两台机器都有导轨2.2.2。这段代码工作的机器有ruby 1.8.7,而这段代码不起作用的两台机器分别有ruby 1.8.6和ruby 1.8.7企业版。
答案 0 :(得分:4)
是红宝石1.8.6中的结果需要一个块,而1.8.7则不需要块。
因此,解决方案是升级到1.8.7或使用块或执行1 ... 4.to_a。
答案 1 :(得分:1)
要获得1.8.6中的1.8.7+行为,您可以这样做:
require 'enumerator'
1.enum_for(:upto, 5)
在所有版本中的工作原理相同,并且在功能上等同于1.upto(5),在1.8.7+中没有阻塞(虽然稍微冗长一点)。
虽然在这种特殊情况下你可以使用范围。