运行脚本时Ruby版本之间的输出差异

时间:2013-12-15 04:53:21

标签: ruby shell irb

我在ruby中有以下脚本:

set = []
for i in 2..100 
  for j in 2..100
    set << i**j
  end 
end
puts set.uniq!.count

使用Ruby版本ruby 1.8.7 (2012-02-08 patchlevel 358) [universal-darwin12.0]运行此脚本时,输出为8243。

当我使用Ruby版本ruby 1.9.2p320 (2012-04-20 revision 35421) [x86_64-darwin12.4.0]运行此脚本时,输出为9183(这是我期望的结果)。

为什么两个版本之间存在差异?

1 个答案:

答案 0 :(得分:1)

我对两个版本(1.8,1.9.3)都得到了相同的结果

$ ruby1.8 --version
ruby 1.8.7 (2012-02-08 patchlevel 358) [i686-linux]
$ ruby1.9.3 --version
ruby 1.9.3p194 (2012-04-20 revision 35410) [i686-linux]
$ ruby1.8 t.rb
9183
$ ruby1.9.3 t.rb
9183

顺便说一句,将uniq!count联系起来并不是一个好主意,因为uniq!如果没有重复则返回nil。