def flatten(l: List[_]): List[_] = {
def iflatten(l: List[_], ret: List[_]): List[_] = l match {
case Nil => ret
case h :: Nil =>
if( h.isInstanceOf[List[_]]) { iflatten(h, ret) }
else {
l.head :: ret
iflatten(l.tail, ret)
}
}
}
Я знаю, что есть несколько способов сделать это, и я не уверен на 100%, что мой способ правильный. Я хотел бы проверить это, но одна проблема, с которой я сталкиваюсь, заключается во втором операторе case, где я вызываю:
... { iflatten(h, ret) }
Я получаю ошибку компилятора:
error: type mismatch;
found : Unit
required: List[?]
Я пытаюсь решить эти проблемы с типами, чтобы узнать больше о системе типов, поскольку она отличается от того, с чем я работал в прошлом. Будем очень признательны за любые предложения относительно того, почему компилятор жалуется.