Scala Seq覆盖++

时间:2014-02-12 17:09:59

标签: scala subclass seq

在Scala 2.10中,我正在尝试创建自己的SeqLike类,它不允许重复。我试图通过覆盖添加到它的方法来做到这一点,在每个方法的末尾调用distinct()

sealed class UniqueSeq[A] private ( private val values : Seq[A] ) extends SeqLike[A,Seq[A]] with Seq[A]// with GenericTraversableTemplate[A,UniqueSeq]
{
     def apply( idx : Int ) : A = values( idx )

     def iterator = values.iterator

     def length = values.length

     override def ++[B]( that : GenTraversableOnce[B] ) : Seq[B] =
     {
         val res = values ++ that
         res.distinct
     }
 }

但是,重写的++方法无法编译。这是SeqLike文档中列出的签名,但res的类型为Seq[Any],因此返回类型也是如此。

我无法看到这种方法是如何工作的,因为AB完全不相关,我只能看到返回类型为Seq[Any] - 有人可以解释一下如何正确覆盖它?

0 个答案:

没有答案