Scala笔记整理(五):函数式编程


[TOC]测试代码如下:输出结果如下:测试代码如下:输出结果如下:其实前面在学习ArrayBuffer的时候已经有使用过匿名函数:说明的作用有两个(匿名函数作为参数和返回值为匿名函数),具体参考下面的测试代码:输出结果如下:测试代码如下:输出结果如下:在这里,我们还用到了foreach,它和map很像, 香港云主机只不过它的函数并不返回任何值,foreach只是简单的将函数应用到每个元素而已。可以写下面一个函数来验证reduce函数的执行过程:这样的话执行过程就非常清晰了,reduce和reduceLeft都是从左边的操作数开始,而reduceRight是从右边的操作数开始。函数的变量不在其作用域内被调用,就是闭包的概念,看下面一个例子:1)mulBy的首次调用将参数变量factor设为3,。该变量在(x:Double)=>factor *x函数的函数体内被引用。该函数被存入triple.然后参数变量factor从运行时的栈上被弹出。2)mulBy再次被调用,这次factor被设为0.5.该变量在(x:Double)=>factor *x函数的函数体内被引用,该函数被存入half. 每一个函数被称为闭包(closure)。闭包有代码和代码用到的任何非局部变量定义构成。其实上面的mulBy函数就类似于下面这个:原本还希望进一步写成下面这样子的:但在scala中不支持这样的写法,下面这样写才可以:之前在Python中使用过闭包,类似上面的例子,Python就可以这样写:测试如下:当然,只是Python的语法格式就没有scala那么灵活了。1、柯里化(currying)指的是将原来接受2个参数的函数变成新的接受一个参数的函数的过程。新的函数返回一个以原有第二个参数作为参数的函数。2、在函数调用的过程中,就变为了两个函数连续调用的形式。在Spark源码中,也有体现,所以对()()这种形式的Curring函数,一定要掌握。以下函数接受一个参数,生成另一个接受单个参数的函数,要计算两个数的乘积,调用如下:

相关推荐: tp6如何使用redis缓存本地安装redis,配置phpredis扩展

本篇内容主要讲解“tp6如何使用redis缓存”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“tp6如何使用redis缓存”吧!到此,相信大家对“tp6如何使 香港云主机用redis缓存”有了更深的了解,不妨来实际操…

免责声明:本站发布的图片视频文字,以转载和分享为主,文章观点不代表本站立场,本站不承担相关法律责任;如果涉及侵权请联系邮箱:360163164@qq.com举报,并提供相关证据,经查实将立刻删除涉嫌侵权内容。

Like (0)
Donate 微信扫一扫 微信扫一扫
Previous 07/25 15:51
Next 07/25 15:51

相关推荐