您的位置:首页 > 大数据

大数据系列修炼-Scala课程27

2016-09-15 11:34 218 查看
大数据系列修炼-Scala课程27

核心内容:

1、Type模式匹配实战解析

2、Array模式匹配实战实战解析

3、List模式匹配实战解析

4、Tuple模式匹配实战解析

1、scala中模式匹配在具体类型(数组类型、List、元组)中的实际应用
实例程序:

object App
{
def main(args:Array[String]):Unit=
{
//模式匹配的简单应用
var i = readInt()
i match
{
case 1 => println("one")
case 2 => println("two")
case 3 => println("three")
case _ => println("others")
}
println("-------------------------")
//模式匹配的具体应用---具体类型(Type)的模式匹配(结合函数)
def fun1(t:Any)= t match
{
case p: String =>   println("字符串类型!内容是:"+p)  //在模式匹配中可以提取出匹配的数值
case p: Int =>      println("整型类型!")
case p: Double =>   println("双精度类型!")
case p: Map[_,_] => p.foreach(println)           //注意占位符在Map映射中的应用
case _ =>           println("others!")
}
fun1("spark")
fun1(10)
fun1(2.0)
fun1(Map("zhang"->88.8))
fun1(Array(10,20))
println("-------------------------")
//模式匹配的具体应用---数组类型(Array)的模式匹配(结合函数)
def fun2(arr:Any)= arr match
{
case Array(0) =>    println("数组中含有一个元素,这个元素为0")
case Array(x,y) =>  println("数组中含有两个元素")   //注意正则表达x与y的应用
case Array(0,_*) => println("数组中至少含有一个元素,并且首元素为0") //注意正则表达式_*的应用
case _ =>           println("others")
}
fun2(Array(0))
fun2(Array(10,20))
fun2(Array(0,10,30))
fun2("spark")
println("-------------------------")
//模式匹配的具体应用---List类型(list)的模式匹配(结合函数)
def fun3(list:Any) = list match
{
case 0::Nil =>println("List中只含有一个元素,这个元素为0")
case _::_::Nil =>println("List中含有两个元素")  //_::_::Nil 可以换成x::y::Nil
case 0::tail => println("list中至少含有一个元素,并且首元素为0")
case _ => println("others")
}
fun3(List(0))
fun3(List(10,20))
fun3(List(0,10,20))
fun3(List("zhang"))
println("-------------------------")
//模式匹配的具体应用---元组类型(Tuple)的模式匹配(结合函数)
def fun4(tuple:Any) = tuple match
{
case (0,_) => println("元组中含有两个元素,并且首元素为0")
case (_,_) => println("元组中含有两个元素")
case (x,0) => println("元组中含有两个元素,第二个元素为0")
case _ => println("others")
}
fun4((0,10))
fun4((10,20))
fun4((10,0))  //注意本行的输出:间接说明了scala中模式匹配的优点
fun4("zhang")
}
}


运行结果:

2
two
-------------------------
字符串类型!内容是:spark
整型类型!
双精度类型!
(zhang,88.8)
others!
-------------------------
数组中含有一个元素,这个元素为0
数组中含有两个元素
数组中至少含有一个元素,并且首元素为0
others
-------------------------
List中只含有一个元素,这个元素为0
List中含有两个元素
list中至少含有一个元素,并且首元素为0
others
-------------------------
元组中含有两个元素,并且首元素为0
元组中含有两个元素
元组中含有两个元素
others


如有问题,欢迎留言指正!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: