scala惰性函数

惰性计算(尽可能延迟表达式求值)是许多函数式编程语言的特性。惰性集合在需要时提供其元素,无需预先计算它们,这带来了一些好处。首先,您可以将耗时的计算推迟到绝对需要的时候。其次,您可以创造无限个集合,只要它们继续收到请求,就会继续提供元素。函数的惰性使用让您能够得到更高效的代码。Java 并没有为惰性提供原生支持,Scala提供了。

介绍

函数返回值被声明为lazy时,函数的执行将被推迟,直到我们首次对此取值,该函数才会执行。这种函数我们称之为惰性函数,在Java的某些框架代码中称之为懒加载(延迟加载)。

注意事项和细节

1)lazy 不能修饰 var 类型的变量

2)不但是 在调用函数时,加了 lazy ,会导致函数的执行被推迟,我们在声明一个变量时,如果给声明了 lazy ,那么变量值得分配也会推迟。 比如 lazy val i = 10

object mylazy {
  def main(args: Array[String]): Unit = {
    val res = sum(10, 10)
    println("-----------------")
    println("res = " + res)
  }

  def sum(n1: Int, n2: Int): Int = {
    println("执行了sum函数")
    return n1 + n2
  }
}

执行结果

执行了sum函数
-----------------
res = 20

 

在var前面加上lazy

object mylazy {
  def main(args: Array[String]): Unit = {
    lazy val res = sum(10, 10)
    println("-----------------")
    println("res = " + res)
  }

  def sum(n1: Int, n2: Int): Int = {
    println("执行了sum函数")
    return n1 + n2
  }
}

执行结果

-----------------
执行了sum函数
res = 20

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值