为什么添加可变产生不同的哈希值?



我有一个简单的struct这样没有自定义==hash()方法:

struct IntroductionMessage
message::String
end

当我调用hash()时,两者返回相同的值:

say_hello_introduction = IntroductionMessage("Hello World")
say_hello_introduction_alternate = IntroductionMessage("Hello World")
hash(say_hello_introduction))
hash(say_hello_introduction_alternate))
# Output:
3650104434
3650104434

当我添加mutable关键字,所以它现在是mutable struct IntroductionMessage,hash()的值是不同的:

2957940122
238434212

字符串本身从未改变,那么为什么添加mutable会产生不同的结果呢?

默认情况下,不可变struct是按值散列的,而mutable struct是按引用散列的。这与默认的相等操作匹配。

相关内容

  • 没有找到相关文章

最新更新