gpt4 book ai didi

scala - Scala 中 AOP 风格的 Mixin 组合

转载 作者:行者123 更新时间:2023-12-01 11:34:57 26 4
gpt4 key购买 nike

我正在尝试使用 mixin 来获得类似 AOP/拦截器的编程风格。

这是我的代码:

trait X {
def run
}

trait Y extends X {
abstract override def run = {
println("hi")
super.run
}
}

object Z extends X with Y {
def run = println("bye")
}

尝试编译时出现以下错误:

method run needs `override' modifier

我在这里做错了什么?我试图添加 'override' 修饰符,但它给了我:

method run needs `abstract override' modifiers

最佳答案

你可以做到这一点的一种方法是在扩展基 X 的类 A 中定义基功能,并提供一个对象(或类)混合AY(以及您可能定义的所有其他特征):

trait X {
def run
}

trait Y extends X {
abstract override def run = {
println("hi")
super.run
}
}

class A extends X {
def run = println("bye")
}

object Z extends A with Y

Z.run 将打印

hi
bye

关于scala - Scala 中 AOP 风格的 Mixin 组合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28065848/

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