我想知道为什么在键值相同的情况下,当我将一个 ruby 哈希值推入数组(哈希值的键)时,它的值为零吗?并检查哈希值是否相等。

some_arr = [1]
=> [1]
my_hash = { some_arr => "value" }
=> {[1]=>"value"}
my_hash[some_arr]
=> "value"
some_arr << 2
=> [1, 2]
my_hash[some_arr]
=> nil
my_hash
=> {[1, 2]=>"value"}

都#eql?并检查散列是否等于true:
some_arr.hash == my_hash.keys[0].hash
=> true
some_arr.eql? my_hash.keys[0]
=> true

甚至不使用数组[1,2]给出值:
my_hash[[1,2]]
=> nil

最佳答案

在这种情况下,您的哈希值将过时。使用rehash解决您的问题。

my_hash.rehash

关于ruby - 尽管#hash和#eql都没有结果?在散列中查找键时计算为真?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/61490577/

10-09 15:46