考虑下面的代码:
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中进行编译,因为“在类型=> String的trait A中重写方法的工作方法工作具有不兼容的类型”.
如何选择一种具体方法?
解决方法
恐怕没办法做到这一点.只有当A和B具有相同的返回类型时,超级[A].工作方式才有效.
考虑这个:
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
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。