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)) 
  }
}


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章