您好以下我无法在Scala中将值附加到我的列表中,以下是我的代码:
var cumFrequency =List[Any]
updatedRdd.foreachRDD( rdd => {
for( item <- rdd.collect()) {
val newRDD = (item._1,item._2.toString.toDouble/newc)
cumFrequency +: newRDD
}
})
我在cumFrequency +: newRDD
无法解析符号时遇到错误。当我想将newRDD
追加到列表cumFrequency
时,我不确定为什么会出错。我是用错误的语法写的吗?
答案 0 :(得分:1)
以下是更正后的行
cumFrequency :+ newRDD
使用List.empty[Any]
或List[Any]()
var cumFrequency = List[Any]()
或
var cumFrequency =List.empty[Any]
要附加到列表,请使用:::
或++
或:+
如果是List,请试试这个
cumFrequency ::: List(newRDD)
或
cumFrequency ++ List(newRDD)
或者如果你不关心订单那么
newRDD :: cumFrequency
答案 1 :(得分:0)
要在程序的上下文中进行此操作,其中值以命令式样式添加到列表中,您需要:
cumFrequency = cumFrequency ++ List(newRDD)
或
cumFrequency = newRDD :: cumFrequency
您还应在声明后添加括号:
var cumFrequency =List[Any]()
大多数Scala程序员不推荐使用此样式。更好的方法是:
val cumFrequency = updatedRdd.flatMap( rdd => {
for( item <- rdd) yield (item._1,item._2.toString.toDouble/2)
})
但这取决于我不熟悉的RDD数据类型。