Scala中的模式匹配

match case的语法如下
变量 match { case 值 = > 代码}
值匹配
1.scala中的模式匹配只会匹配到一个分支,不需要使用break语句
2.match是表达式,与if表达式一样是有值的
3.除了可以匹配常量,还可以匹配变量
4.支持模式守卫

val ch: Char = 'e'

ch match {
	case 'c' | 'C' => print ("这是c")
	//添加模式守卫
	case _ if ch>'c' => print ("这是其他的字符")
	//这是一个变量匹配
	case x => print (x)
}

特殊常量的匹配
import scala.math.E
val i=2.718281828459045
E match {
	case i=>println(i) //小写字母为变量模式
	case `i`=>println(i) //强制常量模式
	case _=>println("others") 
}

类型匹配
val arr = Array("hs", 1, 2.0, 'a')
arr.map{
	case x: Int => println(x) 
	case s: String => println(s.toUpperCase)
	case _: Double => println(Int.MaxValue)
	case _ => 0 
}

集合的匹配(数组,列表,元组)
val arr1 = Array(0,0,0)
val res = arr1 match {
//这里不用new Array()的因为以及可以进行类型匹配的原理是因为Array的伴生对象实现了unapply()方法
	case Array(0) => "0" //匹配1个0的数组
	case Array(x, y) => s"$x $y" // 匹配任何带有两个元素的数组,并将元素绑定到x和y
	case Array(x,y,z) => "0" //匹配任何带有三个元素的数组
	case Array(0, _*) => "0..." //匹配任何以0开始的数组,数组的长度不限
	case _ => "something else"
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值