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

  

Scala实战高手****第13课:Scala模式匹配实战和Spark源码鉴赏的更多相关文章

  1. Scala实战高手****第11课:Scala面向接口彻底实战和Spark源码鉴赏

    第一点: scala的接口trait中所有方法可以都被实现!! 这种情况一般会是一种工具方法的集合,例如接口 Logging! scala 多种继承用extends ... with  .... 在老 ...

  2. Scala实战高手****第9课:Scala类和对象彻底实战和Spark源码鉴赏

    scala类和对象 RDD中创建_sc和deps相比java更加的简洁. 在Spark的例如SparkContext.sqlSpark等全局成员在完成实例化. 在唯一实例的时候一般不会去使用伴生对象a ...

  3. Scala实战高手****第10课:Scala继承彻底实战和Spark源码鉴赏

    isInstanceOf  和 asInstanceOf is用于判断 as用于转换,把父类类型转换成子类类型   getClass 具体找出类型    

  4. Scala实战高手****第8课:零基础实战Scala最常用数据结构Map和Tuple及Spark源码鉴赏

    本课内容1.Map和Tuple在Spark源码中的鉴赏2.Map和Tuple代码操作实战 ------------------------------------------------------- ...

  5. Scala实战高手****第12课:Scala函数式编程进阶(匿名函数、高阶函数、函数类型推断、Currying)与Spark源码鉴赏

    /** * 函数式编程进阶: * 1.函数和变量一样作为Scala语言的一等公民,函数可以直接赋值给变量 * 2.函数更常用的方式是匿名函数,定义的时候只需要说明输入参数的类型和函数体即可,不需要名称 ...

  6. Scala高手实战****第20课:Scala提取器、注解深度实战详解及Spark源码鉴赏

    Spark中的源码的提取器和注解 @SparkContext.scala @ volatile 线程专用 保证线程间共享内容的一致性 @volatile private var _dagSchedul ...

  7. Scala实战高手****第7课:零基础实战Scala面向对象编程及Spark源码解析

    /** * 如果有这些语法的支持,我们说这门语言是支持面向对象的语言 * 其实真正面向对象的精髓是不是封装.继承.多态呢? * --->肯定不是,封装.继承.多态,只不过是支撑面向对象的 * 一 ...

  8. Scala实战高手****第2课:Scala零基础实战入门的第一堂课及如何成为Scala高手

    val声明的不可变的战略意义:1.函数式编程中要求值不可变,val天然符合这一特性:2.在分布式系统中,一般都要求值不可变,这样才能够要求分布式系统的设计和实现,同时拥有更高的效率,val声明的内容都 ...

  9. Scala实战高手****第6课 :零基础实战Scala集合操作及Spark源码解析

    本课内容1.Spark中Scala集合操作鉴赏2.Scala集合操作实战 --------------------------------------------------------------- ...

随机推荐

  1. TCP ------ RST的产生

    产生RST的几个原因 1.请求超时 有89.27两台主机.主机89向主机27发送了一个SYN,表示希望连接8888端口,主机27回应了主机89一个SYN表示可以连接.但是主机89莫名其妙的发送了一个R ...

  2. 怎样在WPS上实现代码语法高亮

    转载自:http://www.cnblogs.com/yuphone/archive/2009/12/13/1622901.html 小時不識月 Stupid & Hungry 本文列举两种可 ...

  3. HDU 5878---预处理+二分查找

    给一个数n,让你求一个大于等于n的最小的满足题意中2^a*3^b*5^c*7^d的数字. 思路: #include<iostream> #include<cstdio> #in ...

  4. WebComponents四大天王教程

    Shadow Dom: http://www.html5rocks.com/zh/tutorials/webcomponents/shadowdom/ http://www.html5rocks.co ...

  5. C# 文件类的操作---获取

    如何获取指定目录包含的文件和子目录 . DirectoryInfo.GetFiles():获取目录中(不包含子目录)的文件,返回类型为FileInfo[],支持通配符查找: . DirectoryIn ...

  6. linux 中解析命令行参数(getopt_long用法)

    linux 中解析命令行参数(getopt_long用法) http://www.educity.cn/linux/518242.html 详细解析命令行的getopt_long()函数 http:/ ...

  7. Linux下文件的三个时间意义及用法

    Linux下文件的三个时间参数: (1)modification time(mtime):内容修改时间        这里的修改时间指的是文件的内容发生变化,而更新的时间. (2)change tim ...

  8. resin + eclipse 遇到的问题

    1. 编译jsp报错: com.caucho.jsp.JspParseException: javac compiler is not available in Java(TM) SE Runtime ...

  9. opencv mat

    mat基础教程: http://blog.csdn.net/sinat_31802439/article/details/50083291 mat 初始化: Mat M(,,CV_32FC1); Ma ...

  10. c# 使用ssh连接远程主机(ssh.net演示)

    本教程使用的是ssh.net这个库.项目地址:https://github.com/sshnet/SSH.NET 使用ssh客户端连接远程主机执行命令,并拿到输出结果: using (var sshC ...