gpt4 book ai didi

Scala 类和案例类 == 比较

转载 作者:行者123 更新时间:2023-12-03 07:49:54 29 4
gpt4 key购买 nike

我不太明白为什么当我们在不覆盖 equals 的情况下比较具有相同类属性的两个实例时方法,它将给出 false .但它会给出 true当我们比较一个案例类的两个实例时。例如

 class A(val name: String, val id: Int)
case class B(name: String, id: Int)

object Test {
val a1 = new A('a',1)
val a2 = new A('a',1)
println(a1 == a2) //this returns false

var b1 = B('b',1)
var b2 = B('b',1)
println(b1 == b2) //this returns true

}

有人能解释一下为什么吗?

最佳答案

case class implements the equals 为您提供的方法 class才不是。因此,当您比较实现为 class 的两个对象时, 而不是 case class ,您要比较的是对象的内存地址。

这与您必须在 Java 中处理平等的问题实际上是相同的。见 this Artima blog post关于写作 equals在 Java(和 Scala)中由 Bill Venners、Martin Odersky 和 ​​Lex Spoon 编写。

关于Scala 类和案例类 == 比较,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22103257/

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