gpt4 book ai didi

scala - 访问惰性 val 的类型会导致它被评估吗?

转载 作者:行者123 更新时间:2023-12-04 17:54:00 24 4
gpt4 key购买 nike

正如问题标题所述,访问 lazy val 成员的 type 是否会导致对该成员的评估?还是仅仅使用它的静态类型?

这是一个示例代码,其中我有一个 implicit lazy val,我想在接受具有该类型的 implicit val 的方法中使用它的类型:

implicit lazy val nonSpaces: Array[(Point, Part)]

...

def randomNonSpaceCoordinate(implicit nonSpaces: this.nonSpaces.type): Point =
nonSpaces(Utils.Random.randUpTo(nonSpaces.length))._1

最佳答案

我们来看看吧:

scala> object Test {
| lazy val test: String = {println("bang!"); "value"}
| val p: this.test.type = null
| def testDef(p: this.test.type) = println(p)
| }
defined module Test

scala> Test.testDef(Test.p)
null

scala> Test.testDef(Test.test)
bang!
value

如您所见,仅访问类型并不需要实际评估惰性 val。

关于scala - 访问惰性 val 的类型会导致它被评估吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14856106/

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