【问题标题】:flatMap function of List in ScalaScala中List的flatMap函数
【发布时间】:2020-07-22 23:46:18
【问题描述】:
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 函数的结果。如果迭代器在地图输出中不可用,则会引发此错误。

我的理解正确吗?

【问题讨论】:

标签: list scala functional-programming scala-collections flatmap


【解决方案1】:

是的,但是您传递给flatMap 的函数本身应该产生List。你要找的只是map:

val l = List(1,2,3)
val f = l map (_ + 1)

flatMap(顾名思义)是连续的mapflatten。后者在 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

【讨论】:

    猜你喜欢
    • 2020-08-17
    • 1970-01-01
    • 2012-08-27
    • 1970-01-01
    • 1970-01-01
    • 2019-03-19
    • 2017-04-23
    • 2017-01-05
    • 2016-11-04
    相关资源
    最近更新 更多