Scala 惰性求值

  • 1、主动求值
  • 2、惰性求值

1、主动求值

系统一旦启动,所有的值都计算出来

好处:后面使用的时候速度比较快
坏处:拖慢系统的启动速度,浪费内存

object LazyDemo {val a :Int = {println("aaaaa"); 10}def main(args: Array[String]): Unit = {}
}

输出:aaaaa

2、惰性求值

只能用于 val

object LazyDemo {lazy val a :Int = {println("aaaaa"); 10}def main(args: Array[String]): Unit = {}
}

不输出任何值

当第一次使用常量 a 时再进行计算,未使用时不求值

object LazyDemo {val a1 :Int = {println("a1"); 10}lazy val a2 :Int = {println("a2");10}def a3 ={println("a3");10}def main(args: Array[String]): Unit = {println(a1)println(a1)println(a1)println("------")println(a2)println(a2)println(a2)println("-------")println(a3)println(a3)println(a3)}

输出:
     1)a1 10 10 10
     2)a2 10 10 10
     3)a3 10 a3 10 a3 10

Scala 惰性求值相关推荐

  1. java惰性计算原理_利用 Lambda 表达式实现 Java 中的惰性求值

    Java 中惰性求值的潜能,完全被忽视了(在语言层面上,它仅被用来实现 短路求值 ).更先进的语言,如 Scala,区分了传值调用与传名调用,或者引入了 lazy 这样的关键字. 尽管 Java 8 ...

  2. 惰性求值 php,详细介绍C#函数式编程的示例代码

    public double MemoryUtilization() { //计算目前内存使用率 var pcInfo = new ComputerInfo(); var usedMem = pcInf ...

  3. 《Haskell并行与并发编程》——第2章,第2.1节惰性求值和弱首范式

    本节书摘来自异步社区<Haskell并行与并发编程>一书中的第2章,第2.1节惰性求值和弱首范式,作者[英]Simon Marlow,更多章节内容可以访问云栖社区"异步社区&qu ...

  4. python中and和or的惰性求值特点_惰性求值和yield-Python

    惰性求值 惰性求值(Lazy evaluation)是在需要时才进行求值的计算方式.表达式不在它被绑定到变量之后就立即求值,而是在该值被取用的时候求值. 除可以得到性能的提升(更小的内存占用)外,惰性 ...

  5. 让Python中类的属性具有惰性求值的能力

    起步 我们希望将一个只读的属性定义为 property 属性方法,只有在访问它时才进行计算,但是,又希望把计算出的值缓存起来,不要每次访问它时都重新计算. 解决方案 定义一个惰性属性最有效的方法就是利 ...

  6. python惰性求值的特点_C#教程之C#函数式编程中的惰性求值详解

    https://www.xin3721.com/eschool/python.html 惰性求值 在开始介绍今天要讲的知识之前,我们想要理解严格求值策略和非严格求值策略之间的区别,这样我们才能够深有体 ...

  7. python中and和or的惰性求值特点_Python中的惰性评估

    一个名为python pattern和Wikipedia的github存储库告诉我们什么是惰性评估. 将expr的评估延迟到需要其值为止,并避免重复评估. python3中的cached_proper ...

  8. 惰性求值——lodash源码解读

    前言 lodash受欢迎的一个原因,是其优异的计算性能.而其性能能有这么突出的表现,很大部分就来源于其使用的算法--惰性求值. 本文将讲述lodash源码中,惰性求值的原理和实现. 一.惰性求值的原理 ...

  9. python惰性求值效果_让Python中类的属性具有惰性求值的能力

    起步 我们希望将一个只读的属性定义为 property 属性方法,只有在访问它时才进行计算,但是,又希望把计算出的值缓存起来,不要每次访问它时都重新计算. 解决方案 定义一个惰性属性最有效的方法就是利 ...

最新文章

  1. Spring框架中的设计模式(二)
  2. 刚刚入手一台G11,发短信是老是出现“发送自HTC手机”字样
  3. 华为笔记本matebook13_为什么我不推荐华为Matebook 13给职场新人/小白?
  4. html滚动条样式自定义,CSS3自定义滚动条样式
  5. .NET C# 发送邮件内容嵌入图片
  6. ubuntu声音太小的解决方案
  7. java按键修改_修改键位映射,打造自己的个性键盘 [转自赵翔鹏的Blog]
  8. amazon s3_在Amazon S3上托管静态网站
  9. VMware 12 专业版永久许可证密钥
  10. Xshell 6免费版
  11. linux下载安装命令
  12. java gson使用_Java 如何使用Gson解析JSON数组
  13. 在Markdown中绘制思维导图
  14. 浏览器首页被雨林木风篡改( /hao.ylmf.com/u7654.html)
  15. php实现倒计时,PHP实现倒计时功能
  16. WITH TIES语句(SQL)
  17. js获取浏览器高度和宽度值(多浏览器)
  18. USDP使用笔记(五)设置Hive on Tez解决return code 2 from org.apache.hadoop.hive.ql.exec.mr.MapRedTask问题
  19. 测试一个教室和一个椅子
  20. 80亿美元贷款细节曝光 阿里“移联网布局+大数据蓝图”加码IPO

热门文章

  1. Chapter7.3:线性离散系统的分析与校正
  2. 3小时开关电源PCB设计实战课程送你,要不要?
  3. 重塑CRM 销售易这样成为中国的Salesforce
  4. Hadoop集群重启过程记录
  5. Appium+Java实现对安卓APK的自动化测试(环境搭建、脚本编写、错误问题、解决方法)
  6. 【Vue全家桶】Vue-Router (详解)
  7. MySQL同步两张表数据
  8. 疯狂java讲义epub_为讲义创建EPUB
  9. LLDB(五):DerekSelander-LLDB 的安装与使用
  10. 8月2日第壹简报,星期二,农历七月初五