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 _ =>"未知"
}
}
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 (a,b)=>println("元素中有2个元素","a"+a+"b"+b)
case a=> println("元素中有1个元素","a"+a)
}
def matchType(value: Any): Unit = {
value match {
case x: Int => println(s"${x} 是Int")
case x: Double => println(s"${x} 是Double")
case _ => println("未知")
}
}
def main(args: Array[String]): Unit = {
matchType(1)
matchType(1.1)
}
-
函数
matchType接受Any类型参数,可以接收任意类型的值 -
case x: Int匹配整型值,并将值绑定到变量x -
case x: Double匹配双精度浮点型值 -
类型匹配在运行时进行,基于值的实际类型而非声明类型
-
这种匹配方式在处理异构集合时特别有用
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")
}
case class Circle(radius: Double) 定义圆形样例类
case class Rectangle(width: Double, height: Double) 定义矩形样例类
样例类自动获得:equals/hashCode方法、toString方法、copy方法、伴生对象apply/unapply方法
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)
}
}