27.Type、Array、List、Tuple模式匹配实战解析

来源:互联网 发布:银泰证券股票交易软件 编辑:程序博客网 时间:2024/05/16 13:42

一、Type模式匹配实战解析

        def match_type(t : Any) = t match{      case p : Integer => println("It is Integer")      case p : String => println("It is String , the content is " + p)      case m : Map[_,_] => m.foreach(println)      case _ => println("Unknown type!!")    }    match_type(2)    match_type("spark")    match_type(Map("scala" -> "spark"))
输出:    

It is Integer
It is String , the content is spark
(scala,spark)


二、Array模式匹配实战解析

def match_array(arr : Any) = arr match{      case Array(0) => println("Array " + "0")   //数组中只有一个元素0      case Array(x,y) => println("Array " + x + " " + y)  //数组中有2个元素      case Array(0, _*) => println("Array " + "0...")   //数组中至少有一个元素0,且开头第一个元素为0      case _ => println("something else")    }        match_array(Array(0))    match_array(Array(0,1))    match_array(Array(0,1,2,3,4,5))
输出:
Array 0
Array 0 1
Array 0...


三、List模式匹配实战解析

 def match_list(lst : Any) = lst match{      case 0 :: Nil => println("list 0")  //List为空,即表示为Nil。::是拼接符。 0::Nil表示只有一个元素0      case x :: y :: Nil => println("list " + x + " " + y)  //List中只有2个元素      case 0 :: tail => println("list 0 ...")   //tail表示除了head(第一个元素)外的剩下所有元素。0::tail表示这个List是以0开头的      case _ => println("something else")    }        match_list(List(0))    match_list(List(2,8))    match_list(List(0,1,2,3,4))
输出:

list 0
list 2 8
list 0 ...

四、Tuple模式匹配实战解析

 def match_tuple(tuple: Any) = tuple match{      case (0, _) => println("tuple 0" )   //tuple里第一个元素是0      case(x, 0) => println("tuple " + x)  //tuple里第二个元素是0,第一个元素是任意类型      case _ => println("something else")    }        match_tuple( (0, "scala"))    match_tuple( (2, 0))    match_tuple( (0,1,2,3,4,5))
输出:   
tuple 0
tuple 2
something else

勉励大家把代码都重复7次,就会很熟练。

参考资料来源于 DT大数据梦工厂Scala零基础实战经典第27课 由王家林老师讲解



原创粉丝点击