专栏首页技术专栏Scala入门与进阶(五)- 模式匹配

Scala入门与进阶(五)- 模式匹配

6.模式匹配

1.最基础的模式匹配

Java: 对一个值进行条件判断,返回针对不同的条件进行不同的处理

Scala:

变量 match {
case value1 =>代码1,
case value2 =>代码2,
...
case _ => 代码N
}
object MatchApp extends App {

val names = Array("zhangsan","lisi","wangwu")
val name = names(Random.nextInt(names.length))

name match {
case "zhangsan" => println("张三...")
case "lisi" => println("李四...")
case _ => println("真的不知道你们在说什么")
}

}

2.加条件进行匹配

3.Array模式匹配

def greeting(array:Array[String])={
array match{
case Array("zhangsan") => println("Hi zhangsan")
case Array(x,y) => println("Hi "+x+" , "+y)
case Array("zhangsan",_*) => println("Hi zhangsan and other friends")
case _ => println("Hi everybody")
}
}

4.List模式匹配

image.png

5.类型匹配

def matchType(obj:Any)={
obj match {
case Int => println("Int")
case String => println("String")
case m:Map[_,_] => m.foreach(println)
case _ => println("other type")
}
}

6.Scala异常处理

image.png

7.case class

class Person
case class CTO(name: String,floor:Int) extends Person
case class Employee(name: String,floor:Int) extends Person
case class Other(name:String) extends Person

def caseclassMatch(person: Person)={
person match{
case CTO(name,floor) => println("CTO name is "+name+", floor is "+floor)
case Employee(name,floor) => println("Employee name is "+name+", floor is "+floor)
case _ => println("other")
}
}

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • HBase 在Linux&Mac 下的安装和配置

    详情参考 http://hbase.apache.org/book.html#quickstart

    Meet相识
  • 慕课网高并发实战(七)- J.U.C之AQS

    3.不断重新尝试获取锁(当前结点为head的直接后继才会 尝试),如果获取失败,则会阻塞自己,直到被唤醒

    Meet相识
  • Flume pull方式和push方式整合

    ==注意在本地和服务器上切换的时候需要修改flume的sink的hostname==

    Meet相识
  • Scala基础——模式匹配

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

    羊羽shine
  • HTML 转原生 HTN 项目开发记录

    本文主要是记录 HTN 项目开发的过程。关于这个项目先前在 Swift 开发者大会上我曾经演示过,不过当时项目结构不完善,不易扩展,也没有按照标准来。所以这段时...

    用户7451029
  • PerfDog WEB端使用手册

    首先,先登录官网(https://perfdog.qq.com/),点击注册按钮:

    WeTest质量开放平台团队
  • Scala 模式匹配

    一个模式匹配包含了一系列备选项,每个都开始于关键字 case。每个备选项都包含了一个模式及一到多个表达式。箭头符号 => 隔开了模式和表达式。

    王知无
  • [Scala随用随学] —— sealed声明的作用

    今天在看MLlib的源码时,看到Vector的声明是sealed trait,很好奇这个sealed有什么作用,与是搜到了这个文章:http://www.cnb...

    用户1154259
  • 【答疑解惑】java中switch语句陷阱

    语音版: 今天群中小伙伴们遇到了一个switch问题我给大家讲解一下,算是Java中的小陷阱吧。 Java中的switch语句穿透: 今天一同学写了类似下面的代...

    程序员互动联盟
  • Scala中的case match语法

    我是攻城师

扫码关注云+社区

领取腾讯云代金券