gpt4 book ai didi

带有缓存 hashCode 的 Scala 案例类

转载 作者:行者123 更新时间:2023-12-04 16:33:22 24 4
gpt4 key购买 nike

我的印象是 Scala 案例类的 hashCode 完全由其字段决定。因此,我认为缓存 hashCode 对于不可变案例类是安全的。

好像我错了:

case class Foo(s: String) {
override val hashCode: Int = super.hashCode()
}

val f1 = Foo("foo")
val f2 = Foo("foo")

println(f1.hashCode == f2.hashCode) // FALSE

谁能解释一下这里发生了什么?

附录 – 仅供比较:
case class Bar(s: String)

val b1 = Bar("bar")
val b2 = Bar("bar")

println(b1.hashCode == b2.hashCode) // TRUE

最佳答案

不确定这个值,但你可以内联 ScalaRuntime._hashCode 的实现:

case class Foo(s: String) {
override val hashCode: Int = scala.util.hashing.MurmurHash3.productHash(this)
}

关于带有缓存 hashCode 的 Scala 案例类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39775202/

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