您的位置:首页 > 其它

scala-27:Type、Array、List、Tuple模式匹配实战解析

2015-12-20 14:24 489 查看
内容:

1、Type模式匹配实战解析

2、Array模式匹配实战解析

3、List模式匹配实战解析

4、Tuple模式匹配实战解析

(1)Type匹配
def match_type(t : Any) = t match {
case p : Int => 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"))

以上代码实现了不同类型数据的模式匹配,当为整形2的时候打印出“It is Integer”,当为map(_,_)集合的时候,执行函数体循环遍历打印出map的key和values值。

(2)Array数组的匹配

def match_array(arr : Any) = arr match {
case Array(0) => println("Array:" + "0")
case Array(x, y) => println("Array:" + x + " " +y)
case Array(0, _*) => println("Array:" + "0 ...")
case _ => println("something else")
}
<p>         match_array(Array(0))</p><p><span style="white-space:pre">	</span> match_array(Array(0,1))</p>

以上代码数组匹配的时候,数组的元素个数为一个时,打印出0,为多个的时候使用_*表示若干个元素,打印函数体println。

(3)List集合模式匹配

def match_list(lst : Any) = lst match {
case 0 :: Nil => println("List:" + "0")
case x :: y :: Nil => println("List:" + x + " " + y)
case 0 :: tail => println("List:" + "0 ...")
case _ => println("something else")
}
match_list(List(0))
match_list(List(3,4))
match_list(List(0,1,2,3,4,5))

同上list有个元素时候Nil,2个元素x,y,3个以上元素为tail,然后执行函数体进行打印。

(4)Tuple(元组)模式匹配

def match_tuple(tuple : Any) = tuple match {
case (0, _) => println("Tuple:" + "0")
case (x, 0) => println("Tuple:" + x )
case _ => println("something else")
}
match_tuple((0,"Scala"))
match_tuple((2,0))
match_tuple((0,1,2,3,4,5))

Tuple有多重类型,不同数量,第一种占位符_表示有多种类型
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: