根据#eql,我想知道为什么当我铲入一个数组(这是哈希的键)时,当键相同时,这个 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"}
Run Code Online (Sandbox Code Playgroud)
两者都#eql?并检查哈希相等性评估为真:
some_arr.hash == my_hash.keys[0].hash
=> true
some_arr.eql? my_hash.keys[0]
=> true
Run Code Online (Sandbox Code Playgroud)
甚至不使用数组 [1,2] 给出值:
my_hash[[1,2]]
=> nil
Run Code Online (Sandbox Code Playgroud)