我有一个简单的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
是按引用散列的。这与默认的相等操作匹配。