match case2

51 阅读1分钟

3.匹配变量的类型

    value match {
        case X:Int => println(s"${X} 是Int")
        case X:Double => println(s"${X} 是Double")
        case _ => println("未知")
    }

5.匹配样例类

// 1. 图形

// case class 形式

case class Circle(radius: Double) {}
case class Rectangle(width: Double, height: Double) {}

## 计算一个图形的面积
def getArea(shape: Any): Double = {
    shape match {
        case Circle(radius) => math.Pi * radius * radius
        case Rectangle(width, height) => width * height
        case _ => 0.0
    }
}

def main(args: Array[String]): Unit = {
    // 1. 实例化图形
    val circle = Circle(2.0)
    // 2. 实例化矩形
    val rectangle = Rectangle(2.0, 3.0)

定义一个数组,其中有4个元素

val arr = Array(11, 22, 33, 44, 55, 66)

// 需求:补充定义三个变量x,y,z,分别保持数组arr中的第1,2,3个元素的值。
var x = arr(0)
var y = arr(1)
var z = arr(2)
println("x=" + x + " y=" + y + " z=" + z)

// 优化:使用match case表达式,完成上述需求
val Array(x, y, z, _*) = arr
println("x=" + x + " y=" + y + " z=" + z)