Scala实践理解高阶函数

1,高阶函数

Scala支持:

1,函数是第一等公民

1,把函数做为实参传递给另外一个函数

2,把函数作为返回值返回

3,把函数赋值给变量

4,把函数存储在数据结构中

Scala中,函数就像普通变量一样,同样也具有函数的类型。

2,函数类型

函数类型的格式为A => B,表示一个接受类型A的参数,并返回类型B的函数

例:Int => String 是把整型映射为字符串的函数类型

3,高阶函数

用函数作为形参或者返回值的函数,称为高阶函数。

例如:

 

4,匿名函数

匿名函数就是函数常量,也称为函数文字量,定义格式为

(形参列表)=> {函数体}

5,柯里化

柯里化函数把具有多个参数的函数转化为一条函数链,每个节点上是单一参数。

例子:以下两个add函数是等价的

Def add(x: Int, y:Int)=x+y

Def add(x: Int,)( y:Int)=x+y  //scala里柯里化的语法

应用例子:

 

可以看到,在函数式编程中,我们可以基于一些通用性的函数,利用偏应用函数柯里化这些技术来定义构造新的函数,而不需要重新构造定义一些新的函数出来,这就是函数式编程的魅力所在

6Scala递归与尾递归

1递归函数

递归函数在函数式编程中是实现循环的一种技术(函数式编程没有循环语句,通过递归实现)。

例子:

 

递归层数深会导致堆栈溢出,可对递归进行优化,即尾递归。

7,尾归递

尾递归函数中所有递归形式的调用都出现在函数的末尾。

当编译器检测到一个函数调用是尾递归时,它就覆盖当前的活动记录而不是在栈中去创建一个新的。可避免堆栈溢出。

 

8综合性例子求


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值