通过此时Scala类型不匹配

时间:2015-07-19 14:57:22

标签: scala polymorphism type-mismatch

我有一个问题我无法自己回答,老实说也不知道该怎么称呼它。

让我告诉你我的代码:

class Collection[+A](sorting: SortableCollection, contains: A*) {

  var sorter: SortableCollection = new SwapSorter()

  def add[B >: A](item: B): Collection[B] = {
    new Collection(sorter, (contains :+ item): _*)
  }

  def sort() = { sorter.sort(this) } 

  def getContains(): Seq[A] = {
    contains
  }
}
trait SortableCollection {

  def sort[A](c: Collection[A]): Collection[A]

}
class SwapSorter extends SortableCollection {

  def sort[A](c: Collection[A]): Collection[A] = {
    def order(): Seq[A] = {
      val seqnew: Seq[A] = c.getContains()
      seqnew.reverse
    }

    new Collection[A](this, order(): _*)
  }  
}

在eclipse中,我尝试在Scala解释器中定义这些类,它会告诉我:

error: type mismatch;
found   : SwapSorter
required: SortableCollection
          new Collection[A](this, order(): _*)

尽管SwapSorterSortableCollection的子类型。 这是由于论证的逆转吗?我将如何解决这个问题,因为我无法实例化一个新的SortableCollection

我在Collection[A]处使用sort方法遇到了同样的问题。

error: type mismatch;
found   : Collection[A]
required: Collection[?]

0 个答案:

没有答案