【发布时间】:2018-04-05 10:08:48
【问题描述】:
我正在尝试将 for 表达式转换为高阶函数的 Scala 练习 - flatMap、filter 和 map。 我不明白 map(List(author1,author2)) 的输入是如何翻译成 book.title 的。
输入:
val books:List[Book] = List(
Book(title = "kids watching", authors = List("Aavik","Arjun"))
)
用于表达:
for{
book <- books
name <- book.authors
if name.startsWith("Aavik")
} yield book.title
高阶函数:
books flatMap(book =>
book.authors filter(name => name startsWith("Aavik")) map(_ => book.title))
地图的输入是 List("Aavik"),地图与 book.title 有什么关系?
【问题讨论】:
-
您的平面地图涵盖了所有内容。您的地图位于 flatMap 内部,因此在其中的任何位置,您都在处理一本书,您可以通过 book 变量访问它
标签: scala