模式匹配 java_模式匹配

[TOC]

# 简介

与default等效的捕获所有的`case _` 模式.如果没有模式匹配,抛出MatchError,每个case中,不用break语句.可以在match中使用任何类型,而不仅仅是数字

# 完全匹配

~~~

object CaseDemo extends App {

val arr = Array("111", "222", "333")

val name = arr(Random.nextInt(arr.length))

println(name)

name match {

case "111" => println("111")

case "222" => println("222")

case _ => println("nnnnnnnn")

}

}

~~~

# 类型匹配

~~~

object CaseDemo2 extends App {

val arr = Array("hello", 1, -2.0, CaseDemo2)

val elem = arr(2)

println(elem)

elem match {

case x: Int => println("Int " + x)

case y: Double if(y>=0) => println("Double " + y)

case z: String => println("String " + z)

case CaseDemo2 => {

println("case demo 2")

}

case _ => {

println("default")

}

}

# 打印类型

println(elem.getClass.getName)

}

~~~

提示: Map类型的泛型在匹配的时候,会自动删除泛型类型,只会匹配到Map类型,而不会精确到Map里面的泛型类型

~~~

var obj = Map("a" -> 1)

obj match {

case m1: Map[String, String] => println("这是Map[String, String]")

case m2: Map[String, Int] => println("这是Map[String, Int]")

}

println(obj + " : " + obj.getClass.getName)

~~~

# 数组匹配

~~~

object CaseDemo3 extends App {

val arr = Array(0, 1, 7, 0)

arr match {

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值