以下代码在repl.it和codeacademy实验室上失败,但是当我选择密钥长度< 8,它的工作原理。 irb中的密钥长度都没有。
这只是网络REPL的一个问题,还是对密钥长度有实际限制?
class Fixnum
def in_words
words =
{
100000000 => "trillion"
}
puts words[self]
end
end
100000000.in_words
答案 0 :(得分:1)
在控制台中一切都是对的,所以我相信这是个问题
2.0.0p247 :001 > words = {100000000 => "trillion"}
=> {100000000=>"trillion"}
2.0.0p247 :002 > words[100000000]
=> "trillion"
实际上哈希不按原样使用密钥,而是使用哈希值
2.0.0p247 :011 > 100000000.hash
=> -2175987708688930977
2.0.0p247 :012 > 1.hash
=> 4338493366955093097
所以在这个意义上所有的键都有相同的长度。