我在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(这是我期望的结果)。
为什么两个版本之间存在差异?
答案 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。