什么是"(line:String)=> {}"结构称为Scala?它是如何工作的?

时间:2016-05-17 05:31:59

标签: scala

我开始学习Scala,我已经遇到了来自https://github.com/sryza/aas/blob/master/ch05-kmeans/src/main/scala/com/cloudera/datascience/kmeans/RunKMeans.scala的这段代码

def buildCategoricalAndLabelFunction(rawData: RDD[String]): (String => (String,Vector)) = {
   ...
   (line: String) => {
       val buffer = line.split(',').toBuffer
       ...
       val label = buffer.remove(buffer.length - 1)
       val vector = buffer.map(_.toDouble)
       ...
       (label, Vectors.dense(vector.toArray))
   }
}

我不明白的是(line:String)=> {...} 是在做。线路在哪里被初始化?在我看来,该程序正在作为rawData参数的输入,但我不明白这是怎么回事。

如果有人能够解释这个Scala结构被称为什么 - 或者甚至更好,它是如何工作的 - 我真的很感激它!

1 个答案:

答案 0 :(得分:2)

它使用anonymous function syntax定义一个函数,这类似于JavaScript和其他语言中的箭头函数。

此语法提供了一种创建没有名称的函数的方法。这些可以由其他函数返回,分配给变量(有效地命名它们),作为参数传递给函数等......