我试图创建一个通用trait,它具有返回类本身的实例的方法.例如:
trait SomeGenericTrait[T]{ def withData(newData : Seq[T]) : this.type } case class SomeImpl(data : Seq[Int]) extends SomeGenericTrait[Int] { override def withData(newData : Seq[Int]) : SomeImpl = copy(data = newData) } error: overriding method withData in trait SomeGenericTrait of type(newData: Seq[Int])SomeImpl.this.type; method withData has incompatible type
没有明确的返回类型:
case class SomeImpl(data : Seq[Int]) extends SomeGenericTrait[Int] { override def withData(newData : Seq[Int]) = copy(data = newData) } error: type mismatch; found : SomeImpl required: SomeImpl.this.type
由于实现的withData的返回值为SomeImpl,而是基于trait的方法声明的预期返回类型为SomeImpl.this.type,因此无法编译.
有人知道我需要如何更改trait方法声明的返回类型,这样才能正常工作?更通用的用例是通过扩展的通用特征来揭示案例类的复制方法.我知道我可能没有清楚地说明这一点,让我知道我应该澄清什么.
使用Scala 2.10.0
解决方法
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。