模式匹配在spark中非常重要,你可以在很多地方能看见模式匹配
def main(args: Array[String]): Unit = { // trigger the constant patterns println(echoWhatYouGaveMe(0)) println(echoWhatYouGaveMe(true)) println(echoWhatYouGaveMe("hello")) println(echoWhatYouGaveMe(Nil)) println(echoWhatYouGaveMe(List(1,2,3))) println(echoWhatYouGaveMe(List(1,2))) println(echoWhatYouGaveMe(Vector(1,2,3,4))) println(echoWhatYouGaveMe((1,2))) println(echoWhatYouGaveMe((1,2,3))) println(echoWhatYouGaveMe(Dogs("kkk"))) println("sum ="+sum(List(1,2,3,4,5))) println("multiply ="+multiply(List(1,2,3,4,5))) println(toInt("11")) copyFile("D:\\spark.txt", "D:\\spark1.txt") } def echoWhatYouGaveMe(x :Any) = x match { //常量匹配 constant patterns case 0 => "zero" case true => "true" case "hello" => "you said 'hello'" case Nil => "an empty List" //序列匹配 sequence patterns case List(1,a,b) => s"a three-element list with 0 as the first element second $a three $b" case List(1,_*) => "a list beginning with 1, having any number of elements" case Vector(1,_*)=> "a vector starting with 1, having any number of elements" //元组 tuples case (a, b) => s"got $a and $b" case (a, b, c) => s"got $a, $b, and $c" //构造器 constructor patterns case Person(first, "Alexander") => s"found an Alexander, first name = $first" case Dogs("Suka") => "found a dog named Suka" //typed patterns case s: String => s"you gave me this string: $s" case i: Int => s"thanks for the int: $i" case f: Float => s"thanks for the float: $f" case a: Array[Int] => s"an array of int: ${a.mkString(",")}" case as:Array[String] => s"an array of strings: ${as.mkString(",")}" case d: Dogs => s"dog: ${d.name}" case list: List[_] => s"thanks for the List: $list" case m: Map[_, _] => m.toString //default case _ => "Unknown" } //How to use Lists in Scala match expressions List最后一个元素是Nil,所以在case的时候一定要加Nil匹配 def sum(list:List[Int]):Int = list match{ case Nil => 0 case x :: rest => x + sum(rest) } def multiply(list:List[Int]):Int = list match{ case Nil => 1 case x :: rest => x * multiply(rest) } //模式匹配最显著的例子就是异常捕捉 def openAndReadAFile(filename:String) = { try { val lines = Source.fromFile(filename).getLines() for(line <- lines){ println(line) } } catch { case t: FileNotFoundException => t.printStackTrace() case e: IOException => println("Had an IOException trying to read that file") } }
相关推荐
Scala学习笔记,大全笔记
学习scala笔记,学习scala笔记,学习scala笔记,学习scala笔记,学习scala笔记,
scala for循环中的模式匹配:1)变量模式匹配2)常量模式匹配3)变量绑定模式匹配4)类型模式匹配5)构造函数模式匹配6)序列模式匹配
赠送jar包:scala-xml_2.11-1.0.4.jar; 赠送原API文档:scala-xml_2.11-1.0.4-javadoc.jar; 赠送源代码:scala-xml_2.11-1.0.4-sources.jar; 赠送Maven依赖信息文件:scala-xml_2.11-1.0.4.pom; 包含翻译后的API...
赠送jar包:scala-xml_2.12-1.0.6.jar; 赠送原API文档:scala-xml_2.12-1.0.6-javadoc.jar; 赠送源代码:scala-xml_2.12-1.0.6-sources.jar; 赠送Maven依赖信息文件:scala-xml_2.12-1.0.6.pom; 包含翻译后的API...
该文档详细的讲述了Scala的基础操作方法和高级使用方法
赠送jar包:scala-java8-compat_2.11-0.7.0.jar; 赠送原API文档:scala-java8-compat_2.11-0.7.0-javadoc.jar; 赠送源代码:scala-java8-compat_2.11-0.7.0-sources.jar; 赠送Maven依赖信息文件:scala-java8-...
scala 学习笔记 方法 函数 类 对象 特质 推断 注解 编译 隐式转换 尾递归 元组 列表
赠送jar包:scala-xml_2.11-1.0.5.jar; 赠送原API文档:scala-xml_2.11-1.0.5-javadoc.jar; 赠送源代码:scala-xml_2.11-1.0.5-sources.jar; 赠送Maven依赖信息文件:scala-xml_2.11-1.0.5.pom; 包含翻译后的API...
scala正则表达式在模式匹配中的应用:提取模式的分组值,通过代码理解正则表达式与模式匹配的原理。
赠送jar包:scala-parser-combinators_2.11-1.0.4.jar; 赠送原API文档:scala-parser-combinators_2.11-1.0.4-javadoc.jar; 赠送源代码:scala-parser-combinators_2.11-1.0.4-sources.jar; 赠送Maven依赖信息...
ScalaOverview.pdf ScalaTutorial.pdf ProgrammingInScala.pdf(这本是书) 博文链接:https://dogstar.iteye.com/blog/182673
[Scala学习笔记-中文资料] 从java角度看Scala
【课程大纲】 第1讲-Spark的前世今生 共12...第18讲-Scala编程详解:模式匹配 共11页 第19讲-Scala编程详解:类型参数 共13页 第20讲-Scala编程详解:隐式转换与隐式参数 共9页 第21讲-Scala编程详解:Actor入门 共8页
【课程大纲】 第1讲-Spark的前世今生 共12...第18讲-Scala编程详解:模式匹配 共11页 第19讲-Scala编程详解:类型参数 共13页 第20讲-Scala编程详解:隐式转换与隐式参数 共9页 第21讲-Scala编程详解:Actor入门 共8页
【课程大纲】 第1讲-Spark的前世今生 共12...第18讲-Scala编程详解:模式匹配 共11页 第19讲-Scala编程详解:类型参数 共13页 第20讲-Scala编程详解:隐式转换与隐式参数 共9页 第21讲-Scala编程详解:Actor入门 共8页
【课程大纲】 第1讲-Spark的前世今生 共12...第18讲-Scala编程详解:模式匹配 共11页 第19讲-Scala编程详解:类型参数 共13页 第20讲-Scala编程详解:隐式转换与隐式参数 共9页 第21讲-Scala编程详解:Actor入门 共8页
【课程大纲】 第1讲-Spark的前世今生 共12...第18讲-Scala编程详解:模式匹配 共11页 第19讲-Scala编程详解:类型参数 共13页 第20讲-Scala编程详解:隐式转换与隐式参数 共9页 第21讲-Scala编程详解:Actor入门 共8页
【课程大纲】 第1讲-Spark的前世今生 共12...第18讲-Scala编程详解:模式匹配 共11页 第19讲-Scala编程详解:类型参数 共13页 第20讲-Scala编程详解:隐式转换与隐式参数 共9页 第21讲-Scala编程详解:Actor入门 共8页
【课程大纲】 第1讲-Spark的前世今生 共12...第18讲-Scala编程详解:模式匹配 共11页 第19讲-Scala编程详解:类型参数 共13页 第20讲-Scala编程详解:隐式转换与隐式参数 共9页 第21讲-Scala编程详解:Actor入门 共8页