在数据帧/ scala中使用下划线和映射功能

时间:2018-06-12 03:59:35

标签: scala function apache-spark dataframe

我试图理解map功能的使用,并在下面的代码中强调_keysList[String]dfDateFrame。我运行一个示例,发现listOfVal是一个列类型列表,但有人可以帮助解释这是如何工作的吗? _在这种情况下意味着什么以及map功能应用了什么?非常感谢

val listOfVal = keys.map(df(_))

ps:我已经阅读了建议的两个问题,但我认为它们是不同的用例

1 个答案:

答案 0 :(得分:1)

在Scala中,_可以充当匿名函数的占位符。例如:

List("A", "B", "C").map(_.toLowerCase)
// `_.toLowerCase` represents anonymous function `x => x.toLowerCase`
// res1: List[String] = List(a, b, c)

List(1, 2, 3, 4, 5).foreach(print(_))
// `print(_)` represents anonymous function `x => print(x)`
// res2: 12345

在示例代码中,keys.map(df(_))相当于:

keys.map(c => df(c))

我们假设您的keys是列名列表:

List[String]("col1", "col2", "col3")

然后它只是映射到:

List[Column](df("col1"), df("col2"), df("col3"))