13.1 模式匹配的基本使用

package com.atguigu.day11.moshipipei

object MatchDemo {
  def main(args: Array[String]): Unit = {
    var a1 = 10
    var a2 = 20
    var res = 0
    var operChar = "0"
    operChar match {
      case "+" => {
        res = a1 + a2
      }
      case "-" => {
        res = a1 - a2
      }
      case "*" => {
        res = a1 * a2
      }
      case "/" => {
        res = a1 / a2
      }
      case _ => println("你是运算符有误")
    }
    println("res = " + res)
  }
}

说明:

  • 如果所有case都不匹配,那么会执行case _ 分支,类似于 Java 中default语句

  • 如果所有case都不匹配,又没有写case _ 分支,那么会抛出MatchError

  • 每个case中,不用break语句,自动中断case

  • 可以在match中使用其它类型(任意类型),而不仅仅是字符

  • => 等价于 java swtich:

  • =>后面的代码块到下一个 case, 是作为一个整体执行,可以使用{} 扩起来,也可以不括


模式匹配的值

模式匹配是表达式, 所以也有自己值(在 scala 中任何语法结构都有值)

上面的可以简化:

package com.atguigu.day11.moshipipei

object MatchDemo2 {
  def main(args: Array[String]): Unit = {
    var a1 = 10
    var a2 = 20

    var operChar = "*"
    val res = operChar match {
      case "+" => a1 + a2
      case "-" => a1 - a2
      case "*" => a1 * a2
      case "/" => a1 / a2
      case _ => "你的运算符负不正确"
    }
    println("res = " + res)
  }
}
Copyright © 尚硅谷大数据 2019 all right reserved,powered by Gitbook
该文件最后修订时间: 2019-04-12 22:18:35

results matching ""

    No results matching ""