gpt4 book ai didi

scala - 在Scala多重继承中,如何解决签名相同但返回类型不同的冲突方法?

转载 作者:行者123 更新时间:2023-12-03 14:38:03 24 4
gpt4 key购买 nike

考虑下面的代码:

trait A {
def work = { "x" }
}

trait B {
def work = { 1 }
}

class C extends A with B {
override def work = super[A].work
}


C在scala 2.10中不会编译,因为“在特征A的类型=>字符串中覆盖方法工作;方法工作具有不兼容的类型”。

如何选择一种特定的方法?

最佳答案

恐怕没有办法。仅当super[A].workA具有相同的返回类型时,B方式才有效。

考虑一下:

class D extends B

....

val test: List[B] = List(new C(), new D())
test.map(b => b.work) //oops - C returns a String, D returns an Int

关于scala - 在Scala多重继承中,如何解决签名相同但返回类型不同的冲突方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19153088/

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