案例类是Scala中一种特殊的类,用于在模式匹配中进行匹配和提取数据。在案例类中,编译器会自动为我们生成一些方法,比如equals、hashCode、toString等。
下面是一个使用案例类和模式匹配解决问题的示例代码:
// 定义一个表示图形的抽象类
abstract class Shape
// 定义三个案例类,分别表示圆形、矩形和正方形
case class Circle(radius: Double) extends Shape
case class Rectangle(width: Double, height: Double) extends Shape
case class Square(side: Double) extends Shape
// 定义一个函数,用于计算图形的面积
def calculateArea(shape: Shape): Double = shape match {
case Circle(radius) => math.Pi * radius * radius
case Rectangle(width, height) => width * height
case Square(side) => side * side
}
// 测试代码
val circle = Circle(5)
val rectangle = Rectangle(3, 4)
val square = Square(2)
println(calculateArea(circle)) // 输出78.53981633974483
println(calculateArea(rectangle)) // 输出12.0
println(calculateArea(square)) // 输出4.0
在上述代码中,我们首先定义了一个抽象类Shape
,然后定义了三个案例类Circle
、Rectangle
和Square
,分别表示圆形、矩形和正方形。每个案例类都有不同的构造参数。
接着,我们定义了一个calculateArea
函数,该函数接收一个Shape
参数,并使用模式匹配来根据具体的图形类型计算面积。在每个模式匹配中,我们提取出对应图形的参数,并进行相应的计算。
最后,我们使用三个不同的图形对象来测试calculateArea
函数,并打印出计算得到的面积结果。
这个示例展示了如何使用案例类和模式匹配解决一个简单的问题,你可以根据实际需求扩展和修改代码。
上一篇:案例和开关问题
下一篇:案例类 - 使用转换复制多个字段