是否可以在蛋糕模式的封闭特征中初始化属性?与早期初始化程序类似的东西。例如:
object CakePatternInit {
trait A {
var prop: String = null
}
trait A1 extends A
trait B {
this: A =>
println(prop.toUpperCase) // I'd like here prop to be initialized already with "abc"
}
def main(args: Array[String]) {
val b = new B with A1
// how do I initialize prop here?
// can I write something like this:
// val b = new B with { prop = "abc" } A1
}
}
答案 0 :(得分:1)
trait A {
def prop: String
}
trait A1 extends A
trait B {
this: A =>
println(prop.toUpperCase) // I'd like here prop to be initialized already with "abc"
}
val t = new B with A1 { def prop = "Hello"}
> HELLO
> t.prop
res22: String = Hello
声明您的prop
方法,因为 scala 无法覆盖 var 的
有一篇文章可以帮助您:cake pattern