具有依赖于抽象成员的 val 成员的蛋糕模式
Cake pattern with val members which depend on abstract members
所以带上这个特质
trait SomeTrait{
val x:Int
val y:Int
val z=x*y
}
然后这个实现
class SomeImpl extends SomeTrait{
val x=5
val y=2
println(z) //prints 0 why?
}
为什么打印0?我怎样才能避免这种情况!我希望 z 是一个 val,以防它是某种昂贵的计算。
z
必须标记为 lazy val
或 def
trait SomeTrait{
val x:Int
val y:Int
lazy val z=x*y
}
详细解释参考When to use val or def in Scala traits?
所以带上这个特质
trait SomeTrait{
val x:Int
val y:Int
val z=x*y
}
然后这个实现
class SomeImpl extends SomeTrait{
val x=5
val y=2
println(z) //prints 0 why?
}
为什么打印0?我怎样才能避免这种情况!我希望 z 是一个 val,以防它是某种昂贵的计算。
z
必须标记为 lazy val
或 def
trait SomeTrait{
val x:Int
val y:Int
lazy val z=x*y
}
详细解释参考When to use val or def in Scala traits?