У меня есть следующий код, который рекурсивно работает с каждым элементом внутри Список
def doMatch(list: List[Int]): Unit = list match {
case last :: Nil => println("Final element.")
case head :: tail => println("Recursing..."); doMatch(tail)
}
Теперь, игнорируя то, что эта функция доступна через filter () и foreach () , это работает нормально. Однако, если я попытаюсь изменить его, чтобы принять любой Seq [Int] , я столкнусь с проблемами:
Вот как, я думаю, должен выглядеть код, за исключением того, что он не работает:
def doMatch(seq: Seq[Int]): Unit = seq match {
case last +: Seq() => println("Final element.")
case head +: tail => println("Recursing..."); doMatch(tail)
}
Редактировать: Так много хороших ответов! Я принимаю ответ agilesteel, поскольку он первым заметил, что :: не оператор в моем примере, а класс case и, следовательно, разница.