scala – 可堆叠的特征模式可以与单例对象一起使用吗?
发布时间:2020-12-16 08:58:31 所属栏目:安全 来源:网络整理
导读:我想将 stackable trait pattern与单例对象一起使用,但我似乎无法找到如何使编译器满意: abstract class Pr { def pr()}trait PrePostPr extends Pr { abstract override def pr() { println("prepr") super.pr() println("postpr") }}object Foo extends P
我想将
stackable trait pattern与单例对象一起使用,但我似乎无法找到如何使编译器满意:
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") } 尝试在repl中对此进行评估会产生以下错误: <console>:10: error: overriding method pr in trait PrePostPr of type ()Unit; method pr needs `override' modifier def pr() = println("Foo") 解决方法
它可以,但像这样:
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 实现必须存在于其中一个超类/超级表中.抽象修改特征必须在继承列表中具有实现的类/特征之后. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |