scala——面向对象:4. 模式匹配

匹配字符串:

package test01

import scala.util.Random

/**

* 匹配字符串

*/

object test {

def main(args: Array[String]): Unit = {

val arr = Array("zhoudongyu","zhengshuang","guanxiaotong","yanzi")

val name = arr(Random.nextInt(arr.length)) //随机拿到一个值

println(name)

name match {

case "zhoudongyu" => println("周冬雨")

case "zhengshuang" => println("郑爽")

case "guanxiaotong" => println("关晓彤")

case "yangzi" => println("杨紫")

case _ => println("others")

}

}

}

 

匹配类型:

package test01

import scala.util.Random

/**

* 匹配类型

*/

object test {

def main(args: Array[String]): Unit = {

val arr = Array("abcde",100,true)

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

println(element)

element match{

case str:String => println(s"match String: $str")

case int:Int => println(s"match Int: $int")

case bool:Boolean => println(s"match Boolean: $bool")

case _: Any => println("others")

}

}

}

 

匹配数组、元组、集合:

package test01

/**

* 匹配数组

*/

object test {

def main(args: Array[String]): Unit = {

//array

val arr = Array(3,2,5,7)

arr match{

//case Array(3,a,b,c) => println(s"case: $a, $b, $c")

case Array(4,a,b,c) => println(s"case: $a, $b, $c")

case Array(_,x,y) => println(s"case: $x, $y")

case _ => println("not matched")

}

}

}

/**

* 匹配元组

*/

object test1 {

def main(args: Array[String]): Unit = {

val tup = (2,3,4)

tup match{

case (_,_,_) => println("lalala")

case _ => println("not matched")

}

}

}

/**

* 匹配集合

*/

object test2 {

def main(args: Array[String]): Unit = {

val l1 = List(1,2,3,4)

l1 match{

case 0 :: Nil => println("case1:0")

case List(a,b,c,d) => println(s"case2: $a,$b,$c,$d")

case _ => println("not matched")

}

}

}

其中,Nil 指空的List,0 :: Nil 代表 List(0)

 

匹配样例类:

package test01

import scala.util.Random

/**

* 匹配样例类

* 先case创建样例类,然后匹配

*/

case class HeartBeat(time: Long)

case class SubmiTask(id: String, taskName: String)

case object ChecTimeOutTask

object test {

def main(args: Array[String]): Unit = {

val arr= Array(ChecTimeOutTask,SubmiTask("1000","task-00001"),HeartBeat(3000))

arr(Random.nextInt(arr.length)) match{

case ChecTimeOutTask => println("ChecTimeOutTask")

case SubmiTask(port,task) => println("SubmiTask")

case HeartBeat(date) => println("HeartBeat")

}

}

}

 

匹配偏函数:

package test01

/**

* 匹配偏函数

* 先def一个函数

*/

object test {

def m1: PartialFunction[String, Int] = {

case "one" => {

println("case 1")

1

}

case "two" => {

println("case 2")

2

}

}

def m2(num: String): Int = num match{

case "one" => 1

case "two" => 2

case _ => 0

}

 

def main(args: Array[String]): Unit = {

println(m1("one"))

println(m2("two"))

}

}

其中,def m1: PartialFunction[String, Int] = {}

代表定义函数m1,与m2相似

PartialFunction[A, B] A是参数类型,B是返回值类型

 

 

 

 

 

 

 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值