前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Scala基础——模式匹配

Scala基础——模式匹配

作者头像
羊羽shine
发布2019-08-20 14:38:28
5640
发布2019-08-20 14:38:28
举报
文章被收录于专栏:Golang开发

match

当需要从多个分支进行选择的场景,类似Java中的switch语句,不需要使用break停止代码执行。

代码语言:javascript
复制
变量 match {
      case value1 => 代码1
      case value2  => 代码2
      ...
      case _ => 代码N
}

eg:

代码语言:javascript
复制
import scala.util.Random
object MatchApp extends  App{
   val numbers = Array("one","two","three")
   val number = numbers(Random.nextInt(numbers.length))
  number match {
    case "one" => println("1")
    case "two" => println("2")
    case _ => println("3")
  }
}

image.png

在模式匹配的case语句中,还可以使用变量。当colorNum=4时,值4会被传递给number变量。

代码语言:javascript
复制
object MathApp  {
  def main(args: Array[String]): Unit = {
    val colorNum = 4
    val colorStr = colorNum match {
      case 1 => "red"
      case 2 => "yellow"
      case 3 => "green"
      case number => number+" is Unknown"
    }
    println(colorStr)
  }
}

case类

在定义一个类的,如果在class 关键字前面加上case关键字,该类是case类

代码语言:javascript
复制
package cn.bx.scala

case class Car (brand:String,price:Int)

object CaseClassApp {
  def main(args: Array[String]): Unit = {
    val bydCar =new Car("BYD",80000)
    val bmwCar =new Car("BMW",300000)
    val benzCar =new Car("Benz",500000)
    for(car <-List(benzCar,bmwCar,bydCar)){
      car match {
        case Car("BYD", 80000) => println("Hello, BYD!")
        case Car("BMW", 300000) => println("Hello, BMW!")
        case Car(brand, price) => println("Brand:"+ brand +", Price:"+price+", do you want it?")
      }
    }
  }
}

执行结果

代码语言:javascript
复制
Brand:Benz, Price:500000, do you want it?
Hello, BMW!
Hello, BYD!
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2019.08.19 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • match
  • case类
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档