模式匹配在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学习笔记整理"中,我们可以深入探讨以下关键知识点: 1. **基础语法**:Scala的基础语法与Java有相似之处,但也有很多独特的特点。例如,它支持变量的不可变性(immutability),使用`val`声明常量,`var`...
5. 特性与模式匹配:Scala支持特性(trait),这是一种轻量级的抽象类型,可以用来实现多重继承。模式匹配是Scala的一个强大特性,可以用于解构复杂的数据结构,简化条件判断和数据处理。 6. 高级语法:Scala的语法...
它的语法与Java类似,但更加强调代码的表达性和简洁性,通过模式匹配、高阶函数等特性,使代码更加可读和易于维护。 1. 类型系统:Scala的类型系统非常强大,支持静态类型检查,同时也允许隐式转换和类型推断,这...
此外,还会介绍Scala中的模式匹配,这是Scala语言的一大特色,使得代码更加简洁和高效。 第二部分:"Scala入门及进阶-part02-类和对象.pdf" 主要讲解Scala的面向对象特性。这部分内容会详细介绍类的创建、对象的...
- **模式匹配**:使用 `case` 语句进行模式匹配,可以应用于多种场景,如解析数据结构、异常处理等。 - **隐式转换**:通过 `implicit` 关键字定义隐式转换规则,可以在编译时自动转换类型。 - **延迟初始化**:使用...
- **模式匹配**:Scala的模式匹配功能可以用于解构复杂数据结构,简化代码。 - ** Actors模型**:Scala内置了对Akka框架的支持,方便构建并发和分布式系统。 5. **Scala开发环境搭建**: - **Windows**:在...
在学习过程中,理解Scala的类型推断和模式匹配也是关键。类型推断能让编译器自动确定变量的类型,提高代码的可读性和简洁性。模式匹配则是一种强大的工具,用于解构复杂数据结构并根据其结构执行不同的操作。 总的...
本教程“scala-learn:scala学习笔记”旨在帮助初学者深入理解Scala的基础知识,同时也为有经验的程序员提供了一个复习和提升的平台。 1. **基础语法与数据类型** Scala的基础语法简洁而强大,包括变量声明(val和...
- **模式匹配**:Scala支持强大的模式匹配功能,可用于字符串、类型以及复杂的数据结构。 - **样例类**:样例类是Scala中一种特殊的类,主要用于模式匹配。它们自动实现了许多有用的特性,如`equals`、`hashCode`和`...
- 模式匹配是Scala中的一个核心特性,它允许我们根据值的不同形式进行不同的操作,常用于解构复杂数据结构。 - 使用`case`关键字创建匹配模式,如`case class`实例、数组、集合等。 3. **函数与高阶函数**: - ...
8. 模式匹配:用于处理数据结构,如case class和枚举。例如: ```scala sealed trait Color case object Red extends Color case object Green extends Color case object Blue extends Color val color = Red ...
此外,Scala还引入了模式匹配、高阶函数、类型推断等特性,提供了更高级的抽象工具。 Cats库是Scala中的一个关键部分,它提供了一套丰富的类型类,如Functor、Applicative、Monad等,这些类型类定义了常见的操作,...
1. **Scala基础**:首先,书籍可能会介绍Scala的基础语法,如类型系统、模式匹配、高阶函数和类、特质等,这些都是编写测试代码的基础。 2. **Scala测试框架**:Scala社区中有多个流行的测试框架,如ScalaTest、...
**Scala FP Coursera课程:深入理解函数式编程** Scala是一种多范式编程语言,...在提供的`scala_fp_coursera-master`压缩包中,可能包含了课程的笔记、代码示例和练习,这些都是深入学习Scala函数式编程的宝贵资源。
这个压缩包中的"spark---scala学习"文件很可能是Scala和Spark相关的学习资料,包括笔记、教程或者示例代码,对于初学者来说是一份宝贵的资源。建议仔细阅读和实践其中的内容,以便更好地掌握这两个工具。
"Scala_day01_scala_" 的标题暗示了这是一份针对初学者的Scala学习资料,旨在帮助新接触者快速入门。下面,我们将深入探讨Scala的一些核心概念和特性。 首先,Scala的基础语法与Java类似,但它提供了更简洁的表达...
### Spark学习笔记 #### Apache Spark简介 Apache Spark是一款专为大规模数据处理而设计的高性能、通用的计算引擎。它的核心特点在于提供了强大的内存计算能力,从而显著提升了数据处理的速度。Spark最初采用Scala...
学习Scala,你需要理解其静态类型的特性、模式匹配、 Actors模型以及类型系统,包括高阶函数、特质(traits)和不可变数据结构。 Groovy是另一种基于JVM的动态编程语言,它的语法简洁,易于阅读和编写。Groovy与...
这暗示着这份资料可能来源于一个开源项目,或者是一个组织良好的学习资源,包含按章节或主题划分的Scala学习笔记和练习。 在深入探讨Scala的知识点时,我们可以关注以下几个核心领域: 1. **类型系统**:Scala拥有...
2. **类型系统**:Scala的强类型特性,类型推断,模式匹配,以及如何定义和使用自定义类型。 3. **面向对象编程**:类、对象、继承、封装和多态的概念,以及Scala中的特质(trait)及其在多继承中的作用。 4. **...