Scala中List的flatMap函数
flatMap function of List in Scala
val l = List(1,2,3)
val f = l flatMap (_ + 1)
我是 运行 Scala 中的上述代码,但出现以下错误。
<console>:12: error: type mismatch;
found : Int(1)
required: String
val f = l flatMap (_ + 1)
flatMap
的作用是执行我们提供的 map 函数(在本例中 ->: _ + 1),然后迭代 map 函数的结果。如果迭代器在地图输出上不可用,则会抛出此错误。
我的理解正确吗?
是的,但是您传递给 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
val l = List(1,2,3)
val f = l flatMap (_ + 1)
我是 运行 Scala 中的上述代码,但出现以下错误。
<console>:12: error: type mismatch;
found : Int(1)
required: String
val f = l flatMap (_ + 1)
flatMap
的作用是执行我们提供的 map 函数(在本例中 ->: _ + 1),然后迭代 map 函数的结果。如果迭代器在地图输出上不可用,则会抛出此错误。
我的理解正确吗?
是的,但是您传递给 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