gpt4 book ai didi

scala - 可堆叠特征模式可以与单例对象一起使用吗?

转载 作者:行者123 更新时间:2023-12-04 06:08:39 26 4
gpt4 key购买 nike

我想使用 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

实现必须存在于父类(super class)/超特征之一中。抽象修改特征必须在继承列表中具有实现的类/特征之后。

关于scala - 可堆叠特征模式可以与单例对象一起使用吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7499680/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com