srp*_*ish 8 singleton scala traits
我想使用可堆叠的特征模式与单例对象,但我似乎无法找到如何使编译器快乐:
abstract class Pr {
def pr()
}
trait PrePostPr extends Pr {
abstract override def pr() {
println("prepr")
super.pr()
println("postpr")
}
}
object Foo extends Pr with PrePostPr {
def pr() = println("Foo")
}
Run Code Online (Sandbox Code Playgroud)
尝试在repl中对此进行评估会产生以下错误:
<console>:10: error: overriding method pr in trait PrePostPr of type ()Unit;
method pr needs `override' modifier
def pr() = println("Foo")
Run Code Online (Sandbox Code Playgroud)
axe*_*l22 13
它可以,但像这样:
abstract class Pr {
def pr()
}
trait PrePostPr extends Pr {
abstract override def pr() {
println("prepr")
super.pr()
println("postpr")
}
}
class ImplPr extends Pr {
def pr() = println("Foo")
}
object Foo extends ImplPr with PrePostPr
Run Code Online (Sandbox Code Playgroud)
实现必须存在于其中一个超类/超级类中.抽象修改特性必须在继承列表中具有实现的类/特征之后.
| 归档时间: |
|
| 查看次数: |
546 次 |
| 最近记录: |