【发布时间】:2015-01-30 02:54:18
【问题描述】:
我正在学习 Scala,遇到了以下难题。
我可以定义以下案例类:
abstract class Expr
case class Number(n: Int) extends Expr
当我从 Number 类创建两个实例并比较它们时
val x1 = Number(1)
val x2 = Number(1)
x1 == x2
我有以下结果:
x1: 数 = 数(1)
x2: 数 = 数(1)
res0: Boolean = true
所以x1 和x2 是一样的。
但是,如果我在 Number 类定义中删除 case 修饰符,即
abstract class Expr
class Number(n: Int) extends Expr
然后以相同的方式比较来自Number 类的两个实例
val x1 = new Number(1)
val x2 = new Number(1)
x1 == x2
我有以下输出:
x1: Number = Number@1175e2db
x2:数字 = 数字@61064425
res0: Boolean = false
说这次x1和x2不一样了。
你能告诉我这是为什么吗? case 在比较两个实例方面有何不同?
谢谢, 平移
【问题讨论】:
-
对不起,我错误地创建了
val x2 = Number(2),它应该是val x2 = Number(1)。我已经更正了。
标签: scala case-class