版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/u012292754/article/details/85157747
1 模式匹配
package com.scalatest.scala.pattern
import scala.util.Random
object MatchApp extends App {
val names = Array("Mike", "John", "Jenny")
val name = names(Random.nextInt(names.length))
name match {
case "Mike" => println("Mike selected")
case "Jenny" => println("Jenny select")
case _ => println("no select")
}
def judgeGrade(name: String, grade: String) = {
grade match {
case "A" => println("eccellent...")
case "B" => println("good..")
case "C" => println("nice..")
case _ if (name == "Mike") => println(name + " low..")
case _ => println("bad..")
}
}
judgeGrade("lisi","D")
judgeGrade("Mike","D")
}
2 数组模式匹配
package com.scalatest.scala.pattern
import scala.util.Random
object MatchApp extends App {
def greeting(array: Array[String]) = {
array match {
case Array("Mike") => println("hello:Mike")
case Array(x, y) => println("hello " + x + "," + y)
case Array("Mike", _*) => println("hello Mike and others....")
case _ => println("hi everyone")
}
}
greeting(Array("Mike"))
greeting(Array("Mike","Jenny"))
greeting(Array("John","Mike","Jenny"))
}
3 List 模式匹配
package com.scalatest.scala.pattern
import scala.util.Random
object MatchApp extends App {
def greeting(list: List[String]) = {
list match {
case "Mike" :: Nil => println("hi : Mike")
case x :: y :: Nil => println("hi: " + x + "," + y)
case "Mike" :: tail => println("hi: Mike and others" )
case _ => println("hi everyone..")
}
}
greeting(List("Mike"))
greeting(List("Mike","lisi"))
}
4 类型匹配
package com.scalatest.scala.pattern
import scala.util.Random
object MatchApp extends App {
def matchType(obj: Any) = {
obj match {
case x: Int => println("Int")
case s: String => println("String")
case m: Map[_, _] => m.foreach(println)
case _ => println("other type")
}
}
matchType(1)
matchType("1")
matchType(1f)
matchType(Map("name"->"Mike"))
}
5 异常处理
package com.scalatest.scala.pattern
object ExceptionApp extends App {
try {
val i = 10 / 0
println(i)
} catch {
case e: ArithmeticException => println("除数不能为0")
case e:Exception => e.printStackTrace()
}finally {
}
}
6 case class
模式匹配
package com.scalatest.scala.pattern
object ExceptionApp extends App {
def caseclassMatch(person: Person): Unit = {
person match {
case CTO(name, floor) => println("CTO name is" + name + ", floor: " + floor)
case Employee(name,floor) => println("Employee name is :" + name + ", floor:" + floor)
case _ => println("other")
}
}
class Person
case class CTO(name: String, floor: String) extends Person
case class Employee(name: String, floor: String) extends Person
case class Other(name: String) extends Person
caseclassMatch(CTO("Jordon","20"))
caseclassMatch(Employee("Lee","9"))
caseclassMatch(Other("other"))
}