2

在为不耐烦的 Scala 解决收集练习问题时:

编写一个接收字符串集合和从字符串到整数的映射的函数。返回一个整数集合,这些整数是映射的值,对应于集合中的一个字符串。例如,给定< Array("Tom", "Fred", "Harry") >< Map("Tom" -> 3, "Dick" -> 4, "Harry" -> 5) >返回< Array(3,5) >。提示:用于<flatMap>组合.<Option><get>

这是我的解决方案并且工作正常:

def mapValues(list: List[String], mapper: Map[String, Int]) : List[Int] = {
   list.map(mapper.get).flatMap(x => x)
}

但是,将代码更改为

list.map(mapper.get).flatMap(_)

我收到返回类型错误。它要求我将返回类型更改为 ((Option[Int]) => GenTraversableOnce[_B]) => List[Nothing]

flatMap(x => x) 和 flatMap(_) 有什么区别。据我了解,两者都是一样的。

PS这个问题的更简单的解决方案是

list.flatMap(mapper.get)
4

0 回答 0