知识点:函数,匿名函数,高阶函数,偏函数
测试代码:
package demo.scala object FuncTest { def main(args: Array[String]): Unit = { // //1.try-catch // try { // 1 / 0 // } catch { // case e: ArithmeticException => println("除数不能是0") // case e: Exception => println(e.getMessage) // } finally { // //TODO // println("finally ...") // } // //2.case class在模式匹配中的应用 // testMatch(Student("li")) // //把方法赋值给变量,两种写法 // val sayHelloObj = sayHello _ // val sayHelloObjet1 = sayHello(_) // sayHelloObj("hello") // //匿名函数可以赋给变量 // var obj = (name: String) => { // println(name) // } // obj("hello") //3.高阶函数map,对集合中的每个元素做同样的操作 var list = List(1, 2, 3) //map里是个匿名函数 y = f(x)形式 println(list.map((x: Int) => x * 2)) //参数类型推断,省略掉类型 println(list.map((x) => x * 2)) //匿名函数如果只有一个参数,可以省略掉括号 println(list.map(x => x * 2)) //占位符_代表list里的每一个元素(推荐写法) println(list.map(_ * 2)) //4.filter过滤 println(list.filter(_ > 2)) //5.take取值 println(list.take(2)) //6.reduce对元素x和元素y进行处理,使用方法x+y,以此类推(从左往右连续的做+操作,即求list中的所有元素的和) list.reduce((x, y) => x + y) list.reduce(_ + _) //打印中间过程 list.reduce((x, y) => { println(x + "," + y) x + y }) //7.max,min,sum,count println(list.min) println(list.max) println(list.sum) println(list.count(_ >= list.min)) //8.flatten 平铺 var list2 = List(List(1, 2), List(3, 4)) println(list2.flatten) //9.flatMap 扁平化 println(list2.flatMap(_.map(_ * 2))) //结果:List(2, 4, 6, 8) println(list2.map(_.map(_ * 2))) //结果:List(List(2, 4), List(6, 8)) //偏函数 println(getScore("zhangsan")) } //普通写法 def add1(x: Int, y: Int) = { x + y } //匿名函数赋给一个新的函数 def add2 = (x: Int, y: Int) => { x + y } def sayHello(mess: String): Unit = { println(mess) } class Person //case class不用new,可以直接用,spark sql中用的非常多 case class Teacher(name: String) extends Person case class Student(name: String) extends Person def testMatch(person: Person): Unit = { //case class在模式匹配中的是使用 person match { case Teacher("wang") => println("this is teacher") case Student("lisi") => println("student lisi") case Student(name) => println("this is student") case _ => println("other") } } //偏函数(被包含在花括号里的一组没有match的case语句就是偏函数) def getScore: PartialFunction[String, Int] = { case "math" => 95 case "english" => 98 case _ => 60 } }
相关推荐
练习题-Scala函数式编程 函数式编程思想进阶 × scala-谜题 巩固基础 × scalatest 类库 类库扩展 × scala-json 操作(json4s) 类库扩展 √ shapeless 泛型编程库 类库扩展 × scala-app-cats cats 库相关操作 ...
Scala是一种强大的多范式编程语言,它融合了面向对象和函数式编程的特性,使得它在处理并发、大数据分析以及构建高性能系统时表现卓越。在"Scala-学习资料-mht.rar"这个压缩包中,包含了关于Scala的学习资料,格式为...
### Scala学习笔记(全) #### 一、Scala概述与特点 Scala是一种多范式的编程语言,旨在集成面向对象编程和函数式编程的各种特性。它运行于Java平台(Java虚拟机JVM),并且能够完全兼容所有的Java程序。这使得Scala...
读书笔记:基于scala语法学习函数式编程方法
读书笔记:scala的纯函数式编程数据结构学习
在"scala学习笔记整理"中,我们可以深入探讨以下关键知识点: 1. **基础语法**:Scala的基础语法与Java有相似之处,但也有很多独特的特点。例如,它支持变量的不可变性(immutability),使用`val`声明常量,`var`...
- **函数式编程**:Scala同时也是一个成熟的函数式编程语言,支持高阶函数、模式匹配等功能。 - **类型推断**:Scala具有强大的类型推断机制,这使得开发者可以在很多情况下省略类型声明。 - **模式匹配**:提供了一...
读书笔记:Scala与Clojure函数式编程模式Java虚拟机高效编程 >源码
### Scala学习笔记关键知识点 ...以上内容涵盖了Scala学习笔记中的关键知识点,从并发编程到函数式编程的核心概念,再到Scala语言本身的一些特殊规则和特点,这些都是学习Scala时需要掌握的基础知识。
笔记 -Scala学习注意事项 主要档案 适用于实用程序的Scala脚本 -Scala spark基本演示 Scala基本-变量,数据结构 -Scala基本数据结构: array, list, tuple ,应用function, lambda带有它们的function, lambda基本。...
读书笔记:《Scala与Clojure函数式编程模式Java虚拟机高效编程》学习代码记录
读书笔记:scala函数编程
Scala是一种强大的多范式编程语言,它融合了面向对象和函数式编程的特性,被广泛应用于大数据处理、分布式计算和高性能应用开发。本压缩包包含五份PDF文档,旨在帮助初学者快速入门并逐步进阶Scala编程。 第一部分...
### Scala的操作笔记 #### 一、课程目标与学习路径 本课程旨在通过三个阶段的目标来逐步深入学习Scala语言,最终能够灵活运用Scala进行Spark程序的开发,并具备阅读Spark内核源码的能力。 - **初级目标**:掌握...
3. **函数式测试**:Scala的函数式特性使得测试可以更加纯粹,避免副作用,从而提高测试的确定性和可预测性。书中可能会讲解如何利用函数式编程思想进行测试。 4. **Mocking和隔离**:在测试中,mocking是模拟依赖...
读书笔记:scala函数式编程练习
读书笔记:scala函数式编程语言例子
读书笔记:函数式编程 scala,java8,groovy 学习
读书笔记:Scala函数式编程的习题答案
读书笔记:scala函数式编程书本练习代码