Да, но функция, которую вы передаете flatMap
, должна сама создать List
. То, что вы ищете, это просто map
:
val l = List(1,2,3)
val f = l map (_ + 1)
flatMap
является (как следует из названия) последовательными map
и flatten
. Последнее в случае List
превращает вложенную коллекцию в плоскую:
val nestedList: List[List[A]] = ???
val flattenedList: List[A] = nestedList.flatten
Ваш пример будет работать, если вы передадите функцию, выдающую List
в flatMap
, примеры:
val res1 = l.flatMap(el => List(el + 1)) // add 1 to every element - same as with map above
val res2 = l.flatMap(el => List(el, 1)) // add 1 after every element