Scala编程之惰性函数
发表于:2025-12-02 作者:千家信息网编辑
千家信息网最后更新 2025年12月02日,一、为什么需要惰性函数惰性计算(尽可能延迟表达式求值)是许多函数式编程语言的特性。惰性集合在需要时提供其元素,无需预先计算它们,这带来了一些好处。首先,您可以将耗时的计算推迟到绝对需要的时候。其次,您
千家信息网最后更新 2025年12月02日Scala编程之惰性函数
一、为什么需要惰性函数
惰性计算(尽可能延迟表达式求值)是许多函数式编程语言的特性。惰性集合在需要时提供其元素,无需预先计算它们,这带来了一些好处。首先,您可以将耗时的计算推迟到绝对需要的时候。其次,您可以创造无限个集合,只要它们继续收到请求,就会继续提供元素。函数的惰性使用让您能够得到更高效的代码。Java并没有为惰性提供原生支持, Scala提供了,使用很方便。
二、java实现懒加载
懒汉式
public class LazyDemo { private String property; //属性也可能是一个数据库连接,文件等资源 public String getProperty(){ if (property==null){ property=initProperty(); //如果没有初始化过,那么进行初始化 } return property; } private String initProperty() { return "property"; }}三、惰性函数介绍
当函数被声明为lazy的时候,函数并不会立即执行,而是当我们首次对这个函数进行调用了,我们才会执行这个函数。所以我们把这个叫做惰性函数(在java中叫做懒加载)。
四、案例
代码一:
object LazyDemo { def main(args: Array[String]): Unit = { val res= sum(10,20) //没有lazy的修饰,这个函数就是eager的 println("================") // println("res:"+res) } def sum(a:Int,b:Int):Int={ println("sum执行了") a+b }}输出: ================
sum执行了
res:30
代码二:
object LazyDemo { def main(args: Array[String]): Unit = { lazy val res= sum(10,20) // lazy修饰,sum()函数不会被立即执行,要首次被调用之后再执行 println("================") // println("res:"+res) } def sum(a:Int,b:Int):Int={ println("sum执行了") a+b }}输出: ================
代码二:
object LazyDemo { def main(args: Array[String]): Unit = { lazy val res= sum(10,20) // lazy修饰,sum()函数不会被立即执行,要首次被调用之后再执行 println("================") println("res:"+res) //调用sum方法 } def sum(a:Int,b:Int):Int={ println("sum执行了") a+b }}输出: ================
sum执行了
res:30
综上我们可以看出,scala中被lazy修饰之后,可以实现懒加载,这在大数据项目中数据的加载计算会非常有用!!
五:注意
1)lazy不能修饰var类型变量
2)函数被lazy修饰后,会导致函数的运行被推迟,我们在声明一个变量,如果给变量加个lazy,那么变量的声明也会被推迟,只有被使用时才会声明生效。例如:
scala> val a=100a: Int = 100scala> lazy val b=1000b: Int = scala> println(b)1000
函数
惰性
代码
变量
输出
元素
数据
时候
编程
只有
大数
好处
就是
尽可能
属性
懒汉
数据库
文件
方法
有用
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
校园网网络技术方案的摘要
网络运营者之间在网络安全
软件开发部门运作模式
mysql数据库转换服务器
数据库系统绪论思维导图
单片机与服务器通信
浙江米尚网络技术 网红
数据库应用和数据库管理
电信iptv无法连接认证服务器
如何查金蝶商贸版服务器地址
城管局网络安全工作总结
手机有没有安卓云服务器
网络安全宣讲师
曙光服务器如何装linux
网络安全算是什么专业
白云区光纤网络技术开发价格多少
山东常见软件开发市场报价
布鲁塞尔华为网络安全中心
国内的cdn加速的国外服务器商
无法连接到数据库11501
邮件服务器安装和配置
安卓手机管理服务器软件
被拉黑打电话会显示服务器出错
网络技术选修教案
学校网络安全风险防范化解
怎么创建mydb1数据库
数据库机房监测管理系统软著
全球服务器总销量
上海众人网络安全有限公司
美国银行从事软件开发