Ste*_* K. 4 scala initialization traits
如何预先初始化val并在Scala中扩展类?
例如:
object Start {
def main(args: Array[String]): Unit = {
new T()
new T2()
//T3?
}
}
class T extends{val z = 10} with X with Y
class T2 extends X with Y {val z=10}
//class T3 extends{val z = 10} ??? Z with X with Y //????
class Z
trait X {
val z :Int
}
trait Y { this :X =>
println("Test: "+z)
}
Run Code Online (Sandbox Code Playgroud)
使用:
class T3 extends {val z = 10} with Z with X with Y
Run Code Online (Sandbox Code Playgroud)
Scala语言规范2.9,5.1.6:
EarlyDefs ::= ‘{’ [EarlyDef {semi EarlyDef}] ‘}’ ‘with’
Run Code Online (Sandbox Code Playgroud)
所以早期的定义总是必须遵循awith
| 归档时间: |
|
| 查看次数: |
785 次 |
| 最近记录: |