标签:lazy 函数 scala 定义 参数 返回值 小记
1.定义函数:需要定义函数的函数名、参数、函数体
函数语法:
def 函数名(参数名:参数类型 , 参数名:参数类型) = {函数体}
scala要求必须给出所有参数的类型,但是不一定给出函数返回值的类型,只要右侧的函数体中不包含递归的语句,scala就可以自己根据右侧的表达式推断出返回类型。
2.单行的函数:
如果函数体中有多行代码,则可以使用代码块的方式包裹多行代码,代码块中最后一行的返回值就是整个函数的返回值,与java不同,不需要使用return返回值。
代码块 : 也就是通过{} 括起来。
例: 定义一个函数累加值
3.递归函数:必须有函数的返回值类型
例:经典的斐波那契数列 时间复杂度不够好
4.函数的默认参数
在scala中,有时我们调用某些函数时,不希望给出参数的具体值,而希望使用参数自身默认的值,此时就定义在定义函数时使用默认参数
默认参数就是在设置参数的时候直接 = 一个默认值。即可
5.带名参数
在调用函数时,也可以不按照函数定义的参数顺序来传递参数,而是使用带名参数的方式来传递
6.函数入门之变长参数
在scala中,有时我们需要将函数定义为参数个数可变的形式,则此时可以使用变长参数定义函数。
也就是 在
参数类型后面添加符号 * 即可。
7.通过序列调用可变参数
8.函数之入门之过程、lazy值和异常
8.1过程
在scala中,定义函数时,如果函数体直接包裹在了花括号里面,而没有使用=连接,则函数的返回值类型就是Unit, 这样的函数就被称之为过程,过程通常用于不需要返回值的函数。
说白了就是正常的函数如果没有返回值那么就称这个函数为过程。
过程还有一种写法,就是将函数的返回值类型定义为Unit
不是过程的函数
是过程的函数
8.2 lazy值
在scala中,提供了lazy值的特性, 也就是说,
如果将一个变量声明为lazy,则只有在第一次使用该变量时,变量对应的表达式才会发生计算,这种特性对特别耗时的计算操作特别有用, 打开文件进行IO,进行网络IO等
案例:
在进行IO的时候需要先导入IO的包
import scala.io.Source._
然后定义lazy常量读文件, 当时lazy的时候, 如果文件不存在,也不会报错, 因为只有在使用变量时才会报错。
8.3异常
在scala中,异常处理和捕获机制与java是非常相似的。
跟java大致一样,只是在catch处,
java的语法是 catch(IllegalArgumenExecption e){print("sorry")}
而scala语法是 catch{case e; IllegalArgumenExecption => print("sorry")}
finally还是不论如何都会执行此处。
标签:lazy,函数,scala,定义,参数,返回值,小记
来源: https://www.cnblogs.com/yzqyxq/p/12681624.html
本站声明:
1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。