gpt4 book ai didi

Scala 惰性 val 缓存

转载 作者:行者123 更新时间:2023-12-01 09:12:22 24 4
gpt4 key购买 nike

在以下示例中:

def maybeTwice2(b: Boolean, i: => Int) = {
lazy val j = i
if (b) j+j else 0
}

为什么当我这样调用它时 hi 没有打印两次:

maybeTwice2(true, { println("hi"); 1+41 })

这个例子实际上来自“Scala 中的函数式编程”一书,给出的原因是为什么“hi”没有被打印两次,这对我来说不够有说服力。所以就想在这里问这个!

最佳答案

所以 i 是一个给出整数的函数吗?当您调用该方法时,您将 b 作为 true 并执行 if 语句的第一个分支。

发生的情况是 j 设置为 i 并且稍后在计算中第一次使用它时,它会执行函数,打印“hi”并缓存结果值 1 + 41 = 42。第二次使用时,结果值已经计算出来,因此函数返回 84,由于 lazy val j 而不需要计算两次函数。

关于Scala 惰性 val 缓存,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27920717/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com