Scala学习笔记(5)—— Scala 模式匹配

版权声明:本文为博主原创文章,未经博主允许不得转载。 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"))

}

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/u012292754/article/details/85157747