📅  最后修改于: 2023-12-03 15:10:24.493000             🧑  作者: Mango
在Scala中,案例类是一种特殊的类,用于通过模式匹配来处理数据。它们可以自动生成equals和hashCode方法,并提供方便的复制方法。
案例类的语法如下:
case class MyClass(param1: String, param2: Int)
使用案例类的主要好处是,我们可以很容易地匹配它们的属性值,而不需要显式比较每个属性。
在Scala中,案例对象是指单例的实例,通常用于代表一些常量或作为工具类的替代品。和案例类一样,它们可以使用模式匹配。
案例对象的语法如下:
case object MySingleton
使用案例对象的好处是,我们不需要创建多个实例,可以直接使用单例来调用方法或访问属性。
以下是一个使用案例类和案例对象的示例:
trait Shape
case class Rectangle(width: Double, height: Double) extends Shape
case class Circle(radius: Double) extends Shape
case object UnknownShape extends Shape
def calculateArea(shape: Shape): Double = shape match {
case Rectangle(w, h) => w * h
case Circle(r) => Math.PI * r * r
case UnknownShape => 0.0
}
val rect = Rectangle(5, 10)
val circle = Circle(2.5)
val unknown = UnknownShape
assert(calculateArea(rect) == 50.0)
assert(calculateArea(circle) == Math.PI * 2.5 * 2.5)
assert(calculateArea(unknown) == 0.0)
上述示例定义了一个图形接口和三个具体的图形实现:矩形、圆和未知形状。它使用模式匹配来计算每个具体形状的面积。还定义了一个单例UnknownShape,用于表示未知的形状。在示例中,我们创建了一个矩形、一个圆和一个未知形状,并使用calculateArea函数来计算它们的面积。
使用案例类和案例对象可使代码更易于阅读、维护和扩展。它们是Scala的重要特性,值得掌握和使用。