Scala(单个)案例类而不是类

时间:2014-08-26 17:05:49

标签: scala oop functional-programming case-class

我有一些包含一些字段而没有逻辑的简单类。将它们作为案例类而不是类实现是一个好主意吗?

我的意思是,

的缺点是什么
case class Point(x: Int, y: Int)

相比
class Point(xc: Int, yc: Int) {
  val x: Int = xc
  val y: Int = yc
}

如果我希望Point是一个没有方法的不可变数据容器?

2 个答案:

答案 0 :(得分:6)

这正是为类设计的案例。缺点是微不足道*,还有一些好处(自动equalshashCodetoStringcopyapplyunapply,产品方法,等)。

顺便说一句,您的班级示例可以简化为class Point(val x: Int, val y: Int)

另请参阅:How does a case class differ from a normal class?

  • 缺点:额外功能的内存使用量增加。

答案 1 :(得分:4)

拒绝使用案例类?最多的边际开销,基本上没有。

定义case class Point(x : Int, y : Int)但会为您提供applyunapplycopytoStringhashCode和" getter&# 34;所有方法都在一行内。如上定义的class Point没有。