大三寒假学习 spark学习 函数定义 匿名函数和闭包

匿名函数;

我们不需要给每个函数命名,这时候可以使用匿名函数:

( num: Int ) => num*2

上面这种匿名函数的定义形式,我们经常称为“Lambda表达式”。“Lambda表达式”的形式如下:

( 参数 ) => 表达式//参数只有一个,括号可以省略

示例:

val myNumFunc: Int => Int =( num: Int ) => num*2
println(myNumFunc(3))

运行结果:

Scala具有类型推断机制,我们可以将myNumFunc的类型省略掉:

val myNumFunc = (num: Int) => num*2

但是把右边的Int也省略掉,解释器将无法推断出类型,如果给出函数的类型则不会报错:

val myNumFunc: Int => Int =( num ) => num*2

闭包:

闭包也是一种函数,是一种特殊的函数

普通函数

val addMore=(x:Int)=>x>0

闭包

val addMore=(x:Int) =>x+more

为什么叫闭包,下面举个例子说明

 

首先我们看到,闭包函数中多了一个未知的变量more

当我们执行addMore(10)的时候,程序会找到var more =1对函数中的more进行绑定

此时 函数中的more由一个开放的未知的变量,变成了已知的变量

闭包反映了一个有开放到封闭的过程

 

posted @ 2022-01-16 12:03  风吹过半夏  阅读(153)  评论(0编辑  收藏  举报