Допустим, мы имеем:Scala частичный список предыдущих элементов
val abc = List(1,2,3,4,5)
И мы хотим, чтобы произвести список из 5 списков, где каждый ВЗ те включают все предыдущие элементы, включая текущий, как:
//res0: List[List[Int]] = List(List(1), List(1,2), List(1,2,3), List(1,2,3,4), List(1,2,3,4,5))
Честно говоря, я пробовал с scanleft
, foldLeft
и reduceLeft
, но не могу найти подходящее решение функции. Я родом из мира Java, и у меня есть проблемы с функциональным мышлением.
Любая помощь будет оценена!
Thx!
Кстати, это гораздо медленнее, чем 'scanLeft вариант. – DaunnC
@DaunnC Почему? Операция ++ является линейной в acc.length, поэтому она будет квадратичной в любом случае. –
Да, вы правы, в Scala была какая-то ошибка или что-то еще на моей машине (нужно больше исследований) в Scala 2.10.3, извините за неполный комментарий. – DaunnC