DT梦工厂 第27讲 Type,Array,List,Tuple模式匹配实战解析

王家林亲授《DT大数据梦工厂》大数据实战视频 Scala 深入浅出实战经典(1-87讲)完整视频、PPT、代码下载:
百度云盘:http://pan.baidu.com/s/1c0noOt6 
腾讯微云:http://url.cn/TnGbdC 
360云盘:http://yunpan.cn/cQ4c2UALDjSKy 访问密码 45e2
土豆:http://www.tudou.com/programs/view/dHz5JKJxurM/
优酷:http://v.youku.com/v_show/id_XMTI4OTcwNzY2MA==.html?from=s1.8-1-1.2
爱奇艺:http://www.iqiyi.com/w_19rru5bi79.html#vfrm=2-3-0-1
腾讯视频:http://v.qq.com/boke/page/k/0/d/k016008s0rd.html
技术爱好者尤其是大数据爱好者 可以加DT大数据梦工厂的qq群

DT大数据梦工厂① :462923555 
DT大数据梦工厂②:437123764 
DT大数据梦工厂③ :418110145

微信公众账号: DT_Spark
王家林老师微信号: 18610086859
王家林老师QQ: 1740415547
王家林老师邮箱: [email protected]

本视频由王家林老师, 亲自讲解, 完全通过代码实战把您带人大数据的时代.

package com.dt.scala.pattern_match

/**
 * @author iken
 * @date 2015-08-29
 */
object PatternMatchMore {
  def main( args : Array[String] ){
    
    /*
     * 1. 对一个未知类型的变量匹配到相应的类型上去
     *    这是如此的高级,模式匹配可以在程序运行的时候,智能判断出被匹配的内容的类型
     *    注意:Map没有指定其类型,原因是scala在进行模式匹配时,对于接口和泛型,scala会擦出具体的类型
     *    所以使用了占位符
     */
    def match_type( t : Any ) = t match{
      case p: Int => println("It is a integer!")
      case p: String => println("It is a Integer!")
      case m: Map[_,_] => m.foreach(println)
      case _ =>  println("unknow type!")
    }
    
    match_type(2)
    match_type(Map("Scala" -> "Spark"))
      
    /*
     * 2.对一个未知的数组进行匹配,它可以将数组匹配到具体形式的case上
     *   case1中是说这个数组只有一个元素,而且该元素必须是0
     *   case2中是说这个数组具有两个任意元素
     *   case3中是说这个数据具有任意多元素,且第一个元素必须是0
     */
    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("some thing!")
    }
    
    match_array(Array(0))
    match_array(Array(0,1))
    match_array(Array(0,1,2,3,4))
    match_array(Array("hello","world"))
    
    /*
     * 3.对一个未知的List进行匹配,它可以将数组匹配到具体形式的case上
     *   case1中是说这个List只有一个元素,而且该元素必须是0
     *   case2中是说这个List具有两个任意元素
     *   case3中是说这个List具有任意多元素,且第一个元素必须是0
     */
    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("some thing!")
    }
    
    match_list(List(0))
    match_list(List(0,1))
    match_list(List(0,1,2,3,4))
    match_list(List("hello","world"))
    
     /*
     * 4.对一个未知的Tuple进行匹配,它可以将数组匹配到具体形式的case上
     *   case1中是说这个Tuple只有一个元素,而且该元素必须是0
     *   case2中是说这个Tuple具有两个任意元素
     *   case3中是说这个Tuple具有任意多元素,且第一个元素必须是0
     */   
    def match_tuple( tuple : Any ) = tuple match{
      case (0,_) => println("List"+"0")
      case (x,_) => println("List "+x)
      case _ =>  println("some thing!")
    }
    match_tuple((0,"scala"))
    match_tuple(("hello",1))
    match_tuple((0,1,2,3,4)) 
  }
}
时间: 2024-08-15 17:25:03

DT梦工厂 第27讲 Type,Array,List,Tuple模式匹配实战解析的相关文章

DT梦工厂 第24讲 scala中sam转换实战详解

王家林亲授<DT大数据梦工厂>大数据实战视频 Scala 深入浅出实战经典(1-87讲)完整视频.PPT.代码下载:百度云盘:http://pan.baidu.com/s/1c0noOt6 腾讯微云:http://url.cn/TnGbdC 360云盘:http://yunpan.cn/cQ4c2UALDjSKy 访问密码 45e2土豆:http://www.tudou.com/programs/view/dHz5JKJxurM/优酷:http://v.youku.com/v_show/id_

Type、Array、List、Tuple模式匹配实战解析之Scala学习笔记-18

package com.leegh.pattern_match /** * @author Guohui Li *//** * Type,Array模式匹配 */object Pattern_Match_More { def main(args: Array[String]): Unit = { def match_type(t: Any) = t match { case p: Int => println("It is Integer") case p: String =&g

王家林亲传《DT大数据梦工厂》第一讲Scala开发环境搭建和Hellworld解析

土豆视频:http://www.tudou.com/programs/view/99sazBunsHg/ 你想了解大数据,你想成为年薪百万吗?那你还等着什么,快点来吧!跟着王家林老师学习spark大数据 这一讲,王老师主讲了Scala环境的搭建 1.安装Java(建议安装java8),安装好后,设置环境变量(java_home.path.classpath这个环境变量) 2.安装Scala,下载地址:spark.apache.org(建议安装2.10.x以上版本),设置环境变量(scala_ho

DT大数据梦工厂 第81讲

DT大数据梦工厂 第81讲http://yun.baidu.com/s/1uLFye本节王老师讲了list的逆变,协变,下界.abstaract class Big_Dataclass Hadoop extends Big_Data//一种 类型class Spark extends Big_Data//另一种类型object List_Constructor _Internals{ def main(args:Array[String]){  val  hadoop=new Hadoop::N

DT大数据梦工厂 第5讲

DT大数据梦工厂 第5讲 http://yun.baidu.com/s/1jGjFpWy 本节王老师讲了数组.最主要的是使用了scala worksheet这个功能.这个功能可以打印出每一行代码的运行情况. package com.dt.scala.hello import scala.collection.mutable.ArrayBuffer object ArrayOps { def main(args: Array[String]): Unit = {     val nums = ne

DT大数据梦工厂 第68讲

DT大数据梦工厂第68讲http://yun.baidu.com/s/1jGKSKAi本节王老师讲了Actor的高级应用.首先,主线程可以发消息给子线程,而子线程接收并处理完消息以后,可以返回给主线程一个消息.这就像邮箱的回复.这里可以在receive偏函数中,写一个关键字 sender !后面就是要发送的内容.而main方法接收时,可以用self.receive偏函数,接收.而且,也可以设置超时时间,用self.receiveWithin(超时时间毫秒){偏函数}这种方式,其作用是当主线程接收

SCALA DT大数据梦工厂 第79讲

王家林亲授<DT大数据梦工厂>大数据实战视频“Scala深入浅出实战经典”视频.音频和PPT下载!第79讲:Scala单例深入讲解及单例背后的链式表达式腾讯微云:http://url.cn/bZPNhv百度云盘:http://pan.baidu.com/s/1eQdIzPw360云盘:http://yunpan.cn/cdm9IH3BEwnEY 访问密码 e591本节王老师讲了scala的单例object Scalaclass Java1class JVM{def method1:this.t

DT大数据梦工厂 第77讲

王家林亲授<DT大数据梦工厂>大数据实战视频“Scala深入浅出实战经典”视频.音频和PPT下载!第77讲:模式匹配下的提取器动手构造实战百度云:http://pan.baidu.com/s/1dD10KFZ腾讯微云:http://url.cn/d8FtbN360云盘:http://yunpan.cn/cdZCgEx2kzytv 访问密码 3c53本节王老师讲了模式匹配下的提取器object :>{ def unapplay[A](list:List[A])={ Some(list.in

DT大数据梦工厂 第76讲

王家林亲授<DT大数据梦工厂>大数据实战视频“Scala深入浅出实战经典”视频.音频和PPT下载!第76讲:模式匹配下的赋值语句百度云:http://pan.baidu.com/s/1qWkPspm腾讯微云:http://url.cn/c2XO4B360云盘:http://yunpan.cn/cdKX92weEFGNd 访问密码 2990模式匹配用做赋值语句.用tuple中的元素来接收值val [email protected]=1000 a为b的别名,背后是用模式匹配完成的同时返回一个tup