なぜRubyが整数をハッシュするのですかn
〜2 * n + 1
?なぜRubyはFixNum nを2n + 1にハッシュしますか?
>> [0,1,2,3].each {|x| puts x.hash}
1
3
5
7
特に単純なオブジェクトの場合、複雑なハッシュを持つ必要はありません。だが、なぜPythonがやっていることをするのではなく、整数をハッシュ化するのとは対照的に、 '倍精度浮動小数点型1を追加する'
>>> map(hash,[0,1,2,3])
[0, 1, 2, 3]
理由はありますか?
あなたはどのバージョンのルビーを使用していますか? –
私はLinux上でruby19で非常に異なる出力を持っている: '-4507979699089292723 -2858483109482119521 -3969476086452127319 2371950802045904379' –
ルビー1.8.7(2010-01-10パッチレベル249)[ユニバーサル-darwin11.0] –