Scala实战高手****第13课:Scala模式匹配实战和Spark源码鉴赏

Scala实战高手****第13课:Scala模式匹配实战和Spark源码鉴赏

package com.dt.spark.scala.bascis
 
class Dataframework 
case class Computerframework (name:String,popular:Boolean) extends Dataframework 
case class Storgeframework (name:String,popular:Boolean) extends Dataframework 
 
object helloPatternMatch {
  def main(args: Array[String]): Unit = {
   // getSalary("hadoop")
   // getSalary("flink")
   // getSalary("scala")
    
    getSalary("scalasafdas",6)
    getMatchType(100.0)
    getMatchType("java")
    getValue("spark",Map("spark"->"the hosttest!!"))
    
    getBigDataType(Computerframework("spark",true))
 
    getMatchTypeCollection(Array("scala"))
    
  }
  
  def getSalary(name:String,age:Int){
    name match{
      case "spark" => println("$ 15k")
      case "hadoop" =>  println("$ 12k")
      case _ if name == "scala" =>  println("$ 14k")
      case _ if name == "flink" =>  println("$ 13k")
      case _name if age >= 5 =>  println(" name : "+ _name +"  $ 16k")
     
      case _ =>  println("$ 8k")
    }
  }
  
  def getMatchType(msg:Any){
    msg match {
      case i: Int => println("integer")
      case s:String => println("String")
       case s:Double => println("Double")
       case array:Array[Int]=>  println("Array")
       case _ => println("other type")
    } 
  }
  
   def getMatchTypeCollection(msg:Array[String]){
    msg match {
      case   Array("scala") => println("1   element")
      case  Array("scala","java")=> println("2  element")
       case  Array("spark",_*) => println("many element")
       case _ => println("other element")
    } 
  }
  
 def getBigDataType(data:Dataframework){
   data match {
     case Computerframework(name,popular) =>  println("name:  "+name+" "+ popular)
     case Storgeframework(name,popular) =>   println(name+" "+ popular)
     case _ =>   println("other types")
   }
   
   
   
 }
   
  def getValue(key:String,content: Map[String,String]){
    content.get(key) match {
      case Some(value) => println(value)
      case None => println("none")
    }
  }
  
  
}
 
 
 
  结果
  
  
  
   name : scalasafdas  $ 16k
Double
String
the hosttest!!
name:  spark true
1   element