scala matchase (3

41 阅读1分钟
package matchase

/*
*match case
* 1.匹配精确值
* 2.匹配数据类型
* 3.匹配元素的个数
* 4.匹配数组元素个数 元素特征
 */
object matchase04 {
 // def processValue(value:Any):Unit = {

    def matchArray(arr: Any): Unit = {
      arr match {
        case Array(x,y) => println(s"匹配到有两个元素的数组",x,y)
        case Array(1,b,c) => println("两个元素的元组")
        case Array(a,b,c) => println("匹配到有三个元素的数组",a,b,c)
        case Array(10,_*) => println("第一个元素是10,元素的个数有任意个")
        case _ => println("未匹配到")
      }
    }

    def main(args: Array[String]): Unit = {
     val arr1 = Array(1,2,3)
     val arr2 = Array(2,2,3)
     val arr3 = Array(10,2,3,1)
    }
}
package matchase

/*
*match case
* 1.匹配精确值
* 2.匹配数据类型
* 3.匹配元素的个数
* 4.匹配数组元素个数 元素特征
* 5.匹配案例类
 */
object matchase05 {
 case class Circle(r:Double)
 case class Rectangle(w:Double,h:Double)

 def calculateArea(shape:Any):Double = {
   shape match {
     case Circle(r) => 3.14 * r * r
     case Rectangle(w,h) => w * h
     case _ => 0.0
   }
 }

  def main(args: Array[String]): Unit = {
    val circle = Circle(2.0)
    val rectangle = Rectangle(2.0,3.0)
    println(calculateArea(circle))
    println(calculateArea(rectangle))
  }
}
package matchase

/*
*match case
* 1.匹配精确值
* 2.匹配数据类型
* 3.匹配元素的个数
* 4.匹配数组元素个数 元素特征
* 5.匹配案例类
* 6.变量声明时的匹配
 */
object matchase06 {
  def main(args: Array[String]): Unit = {
    val arr = Array(11,22,33,4,5)
    //定义3个变量 xyz 保存数组中的前三个元素值
    //val x = arr(0)
    //val x = arr(1)
    //val x = arr(2)

    val Array (x,y,z,_*) = arr
    println(x,y,z)
  }

}