gpt4 book ai didi

scala - 在 scala 特征子类中创建时执行代码

转载 作者:行者123 更新时间:2023-12-02 04:33:15 26 4
gpt4 key购买 nike

我想在 trait 中定义一个 val,它由实例化的子类计算一次。

例如:

trait Example
{
val p : Int
val after : Int = p + 1
}

class Ex(x : Int) extends Example
{
val p = x
}

我希望为 Ex 的每个实例计算 after,但无论我给出哪个参数 xafter 始终为 1。就好像计算时 p0 一样。

当然,它可以与 def 配合使用,但不再只计算一次。

最佳答案

Example 中的

after 立即实例化,在您的 Ex 实际实例化之前 - 然后甚至在查看您的 x 之前.

要修复此问题,您可以将 after 转换为 lazy val,它将在您第一次使用它时进行评估。

关于scala - 在 scala 特征子类中创建时执行代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22571055/

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