第3课:Scala函数式编程彻底精通及Spark源码阅读

本文深入探讨Scala中的函数式编程技巧,包括匿名函数、高阶函数及其应用场景,并通过具体案例展示如何使用Scala进行Spark源码级别的开发。此外,还介绍了参数推断、闭包、柯里化等高级特性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

本期内容:

  1. Scala 中函数式变成彻底详解
  2. Spark源码中的Scala函数式编程
  3. 案例和作业

def fun1(name:String){println(name)}

val fun1_v = fun1 _  //函数名+空格+_ 代表函数原型   可以赋值给变量
fun1_v: String => Unit = <function1>

fun1("Spark")
fun1_v("Spark")

匿名函数

val fun2 = (content: String) => println(content)
fun2("Scala")

高阶函数

函数的参数为函数
函数可赋值给变量,变量作为函数参数

val hiScala = (content : String) => println(content)
def bigData(func: String => Unit, content: String) {func(content)}

bigData(hiScala, "Spark")

val array = Array(1,2,3,4,5,6,7,8,9)
array.map(item => item*2)

高阶函数的返回值也可能是函数

def func_Returned(content: String) = (messege : String) => println(content+" "+messege)

val returned = func_Returned("Spark")
returned("Scala")
// Spark Scala

参数推断

将一个匿名函数传递给另外一个函数或方法是,Scala会尽量帮助你推断出类型信息
对于只有一个参数的函数,你可以省略掉外围的()
如果参数在=>右侧只出现过一次,就可以用下划线(_)代替,甚至可以不加参数,不写
这里写图片描述

闭包

函数的变量超出其有效域时还能对函数内部的变量进行访问

闭包

funcResult 仍可以访问scala的 content变量 “Spark”
生成了一个看不见的对象

柯里化 currying

将原来接受两个参数的函数变成新的接受一个参数的函数的过程。
新的函数返回一个以原有第二个参数作为参数的函数
这里写图片描述

常用高阶函数

(1 to 100).reduceLeft(_+_)

从左向右累加

.map
.flatMap(_.split)
.zip

作业

统计一个文件夹下面所有文件中的单词出现的总次数

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值