match-case

1 阅读1分钟
package matchcase

object matchcase01 {
  def main(args: Array[String]): Unit = {
    println(getProvinceName(11))
    println(getProvinceName(42))
    println(getProvinceName(12))
  }
  def getProvinceName(code:Int):String = {
    code match{
      case 42 => "湖北"
      case 11 => "北京"
      case _ => "未知"
    }
  }
}
package matchcase

object matchcase02 {
  def main(args: Array[String]): Unit = {
    val xiaohong = (100,100,100)
    val xiaoming = (89,98)

    getScore(xiaohong)
    getScore(xiaoming)
    getScore(1,2,3,4)
  }
  def getScore(score:Any):Unit = {
    score match{
      case(a,b,c) =>println("元组中有三个元素:a = " + a + "b = " +b +"c =" + c)
      case _ => println("未知")
    }
  }
}
object matchcase03 {
  def main(args: Array[String]): Unit = {
    testType(Array(1,2,3))
    testType(Array(1,2,3,4))
    testType(Array(11,2,3,4))
    testType(Array(11,1,3,4))
  }

  def testType(arr:Any):Unit = {
    arr match {
      case Array(1, x, y) => println("arr是一个数组,有三个元素,第一个是1")
      case Array(1, x, y, z) => println("arr是一个数组,有四个元素,第一个是1")
      case Array(x, 1, y, z) => println("arr是一个数组,有四个元素,第二个是1")
      case _ => println("未知")
    }
  }
}
object matchcase04 {
  case class Circle(radius:Double)
  case class Rectangle(width:Double, height:Double)

  def getArea(obj:Any):Unit = {
    obj match {
      case Circle(radius) => println("圆形的面积是:" + radius * radius * 3.14)
      case Rectangle(width, height) => println("矩形的面积是:" + width * height)
      case _ => println("未知")
    }
  }

  def main(args: Array[String]): Unit = {
    getArea(Circle(2))
    getArea(Rectangle(2,3))
    getArea("abc")
  }
}
object matchcase05 {
  def main(args: Array[String]): Unit = {
    val arr = Array(1,2,3,4,5)


    var a = arr(0)
    var b = arr(1)
    var c = arr(2)
    println("a = " + a + " b = " + b + " c = " + c)

    val Array(x, y, z, _*) = arr
    println("x = " + x + " y = " + y + " z = " + z)
  }
}
package matchcase

object matchcase06 {
  def main(args: Array[String]): Unit = {
    val a = 11

    a match {
      case x:Int if a > 10 => println("a是大于10的Int")
      case _ => println("a is not Int")
    }
  }
}