3、scala函数入门
1、定义函数
2、在代码块中定义函数体
3、递归函数与返回类型
4、默认参数
5、带名参数
6、变长参数
7、使用序列调用变长参数
8、过程
9、lazy值
10、异常
1、 定义函数
在scala中定义函数时,需要定义函数的函数名、参数、函数体。
Scala要求给出所有参数的类型,但不一定给出返回值类型,只要右侧的函数体中不包含递归的语句,scala就可以根据右侧的表达式推断出返回类型。
2、在代码块中定义函数体
单行的函数
如果函数体中存在多行代码,则可以使用代码块的方式包裹多行代码,代码块最后一行的返回值就是整个函数的返回值。(与java使用return不同)
3、递归函数与返回类型
如果函数体内递归调用函数自身,必须手动给出函数的返回类型。如经典的斐波那契数列
4、默认参数
在scala中有时我们调用某些函数时,不希望给出参数的具体值,而希望使用参数自身默认的值,此时就定义在定义函数时使用默认参数。
如果给出的参数不够,则会从左往右依次应用参数。
5、带名参数
在调用函数时,可以不按照参数顺序传递函数,而是使用带名参数的方式传递。
还可以混合使用过未命名参数和带名参数,但是未命名参数必须排在带名参数前面。
6、变长参数
Scala中,我们需要将函数定义为参数个数可变的形式,此时可以使用变长参数定义函数。
7、使用序列调用变长参数
如果想将一个已有的序列直接调用变长参数函数,是不对的。
此时需要使用scala特殊的语法将参数定义为序列,让scala解释器识别。如图
8、过程
在scala中定义函数时,如果函数体直接包裹在花括号里面,而没有使用=连接,则函数的返回值类型即使Unit。这样的函数被称之为过程。过程通常用于不需要返回值的函数。
过程还有一种写法,就是将函数的返回值类型定义为Unit。
9、lazy值
Scala中,提供lazy值的特性,如果将一个变量声明为lazy,则只有在第一次使用该变量时,变量对应的表达式才会发生计算。这种特性对特别耗时的计算操作特别有用,比如打开文件进行IO,进行网络IO等。
10、异常
在scala中,异常处理和捕获机制与java是非常相似的。
最新文章
- 安装第三方APP好的站点及解除安全与隐私限制
- Windows Live Writer发布测试
- [BZOJ1016][JSOI2008]最小生成树计数(结论题)
- JZOJ P1817:[8.27]研究性学习作业
- webApp前端开发技巧总结
- php中static静态关键字的使用
- 151. Reverse Words in a String
- winform 防止多開
- alibaba笔试3
- cenots 下的 lamp(备份与恢复)
- Leetcode 线性表 Swap Nodes in Pairs
- TForm类有关属性简介
- String,StringBuffer,StringBuilder个人认为较重要的区别
- Grid move
- mysql 5.7 enable binlog
- 微信小程序之弹出操作菜单
- windows集群简单介绍
- Python常见字符编码间的转换
- 转载《ionic 热更新 cordova-hot-code-push》
- Oracle卸载后手工删除内容
热门文章
- 第五节:DataFrame聚合函数
- 【Codeforces 349B】Color the Fence
- 【hdu 2108】Shape of HDU
- 【[Offer收割]编程练习赛14 D】剑刃风暴(半径为R的圆能够覆盖的平面上最多点数目模板)
- 敏捷开发系列学习总结(4)—Git管理工具sourcetree的安装
- PatentTips - Invalidating TLB entries in a virtual machine system
- Servlet请求参数编码处理(POST &; GET)
- [转]十五天精通WCF——第十三天 用WCF来玩Rest
- 微信小程序的小问题(1)
- hdu 1010 Tempter of the Bone (奇偶性剪枝)