scala - Spark中的scala匿名函数中的代码块是什么意思?
问题描述
我是 scala 的新手,不明白代码块在匿名函数中的含义。这是一些示例代码:
def makeIndex(langs: List[String], rdd: RDD[WikipediaArticle]): RDD[(String, Iterable[WikipediaArticle])] = {
val articles_Languages = rdd.flatMap(article => {
langs.filter(lang => article.mentionsLanguage(lang))
.map(lang => (lang, article))
})
articles_Languages.groupByKey
}
这是否意味着一个WikipediaArticle
对象从其原始转换为一个元组列表(lang,article)
,然后展平,并通过调用 groupByKey 将其转换为RDD[(String, Iterable[WikipediaArticle])]
?
这是否意味着{}
只要块内的最后一行返回我想要的对象,我就可以在块内编写任何代码?以这种方式迭代langs
每篇文章的示例代码?
解决方案
map
并且flatMap
是高阶函数,它们接收一个函数作为参数,您可以通过多种方式调用它们。()
您可以只传递一个您定义的方法,如果它只有一行,则可以在其中传递一个匿名函数,或者{}
如果您需要更多行代码,则可以在内部传递。
是的,如果你遵循所需的签名,你可以传递任何你想要的东西,这意味着输入和输出必须与签名匹配。
如果map
您有签名A => B
,则可以将您的签名转换A
为您想要的任何东西
推荐阅读
- flutter - 显示来自 Firestore 的 N 个 uid 我是新手
- pandas - Pandas - xls 到 xlsx 转换器
- python - 如何解析 JSON 中的数据并搜索多个模式或匹配项?
- javascript - 表单对话框不设置状态
- c - 如何检查用户输入的值是否为double(C无限循环问题,附示例代码)
- xml - 在 PDF 表单中收集对象的页码
- python - 情节:如何检查和更改情节人物?
- javascript - 使用 forEach 将异步值添加到数组
- javascript - 如何将此关键字传递给javascript类函数
- javascript - 如果本地存储变量为空,如何什么都不做