У меня проблемы со следующим кодом:

object GestorContactos {
  private var listaContantocs:List[Contacto] = Nil
  def insertarOrd(c:Contacto):List[Contacto]=listaContantocs={
    var aux:List[Contacto]=listaContantocs.sortBy(_.edad)
    aux.filter(x=>x.edad<c.edad)::c::(aux.filter(x=>x.edad>c.edad))
  }

aux.filter(x=>x.edad<c.edad) возвращает список [Contacto] и то же самое возвращает aux.filter(x=>x.edad>c.edad).

Проблема в том, что когда я пытаюсь добавить оба результата с помощью объекта Contacto (var c) в один список, появляется следующая ошибка:

type mismatch;
 found   : List[Contacto]
 required: Contacto

Кажется, что listaContantocs, неизменяемый List [Contacto], не любит возвращаемый тип List [Object]. Есть ли способ преобразовать List [Object] в List [Contacto]?

0
ignacio aranguren 28 Ноя 2020 в 18:34

1 ответ

Лучший ответ

Вы объединяете различные типы элементов List[Contacto] и Contacto с оператором ::.

Вот что вы хотите

aux.filter(x=>x.edad<c.edad) ++ (c :: (aux.filter(x=>x.edad>c.edad)))
1
Ivan Stanislavciuc 28 Ноя 2020 в 15:42