gpt4 book ai didi

scala - 冲突的嵌套继承特征

转载 作者:行者123 更新时间:2023-12-04 10:12:56 25 4
gpt4 key购买 nike

假设我有以下代码:

trait Trait1 { 
trait Inner {
val name = "Inner1"
}
}

trait Trait2 {
trait Inner {
val name = "Inner2"
}
}

class Foo extends Trait1 with Trait2 {
// I want Concrete1 to be a Trait1.Inner not a Trait2.Inner
class Concrete1 extends Inner
val c = new Concrete1
}

object Obj {
def main(args: Array[String]): Unit = {
val foo = new Foo
println(foo.c.name)
}
}

当我混入 Trait1Trait2 ,指 Inner似乎默认为 Inner我第二次混入的任何特征的类型;所以当我打电话时 Objmain它打印的方法 Inner2 .如何引用 Trait1.InnerFoo ?以下所有三个都会给出编译器错误:
class Concrete1 extends Trait1.Inner
class Concrete1 extends Trait1$Inner
class Concrete1 extends Trait1#Inner

最佳答案

代替

class Concrete1 extends Inner

用这个
class Concrete1 extends super[Trait1].Inner

那应该让你得到你想要的

关于scala - 冲突的嵌套继承特征,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2073263/

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