gpt4 book ai didi

Ruby:为什么相同的字符串有不同的哈希码?

转载 作者:太空宇宙 更新时间:2023-11-03 17:27:55 24 4
gpt4 key购买 nike

test = 'a'
test2 = '@a'.slice(0)
test3 = '@a'[1]

puts test.hash
puts test2.hash
puts test3.hash

输出:

100
64
97

这是一个错误还是我误解了散列方法的工作原理?有办法解决这个问题吗?

最佳答案

这些表达式的结果并不都是相同的数据。 Ruby 1.8 整数包含用于单字符索引的字符编号。这在 Ruby 1.9 中已更改,但 slice(0) 返回字符串 '@' 的第一个字符,而不是 'a'

在 Ruby 1.8 中(使用 irb):

irb(main):001:0> test = 'a'
=> "a"
irb(main):002:0> test2 = '@a'.slice(0)
=> 64
irb(main):003:0> test3 = '@a'[1]
=> 97
irb(main):004:0> test.hash
=> 100
irb(main):005:0> test2.hash
=> 129
irb(main):006:0> test3.hash
=> 195

在 Ruby 1.9.1 中:

irb(main):001:0> test = 'a'
=> "a"
irb(main):002:0> test2 = '@a'.slice(0)
=> "@"
irb(main):003:0> test3 = '@a'[1]
=> "a"
irb(main):004:0> test.hash
=> 1365935838
irb(main):005:0> test2.hash
=> 347394336
irb(main):006:0> test3.hash
=> 1365935838

关于Ruby:为什么相同的字符串有不同的哈希码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2687698/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com