scala中的()和{}
大括号{}用于代码块,计算结果是代码最后一行;
大括号{}用于拥有代码块的函数;
大括号{}在只有一行代码时可以省略,除了case语句(Scala适用);
小括号()在函数没有参数时可以省略(Scala适用);
几乎没有二者都省略的情况。
单个参数尽量用{},只有一行代码情况下可以用().
两个及以上参数必须用()
println(listRDD.mapPartitionsWithIndex( //两个参数,必须()
(index, datas) => {
datas.map {
data => { //因为函数只有一行代码,所以此{}可以省略
(index, data)
}
}
}
).collect().mkString(" "))
println(listRDD.mapPartitionsWithIndex(
(index, datas) => {
datas.map {
data => (index, data) //因为data只出现一次,所以可以替换成_
}
}
).collect().mkString(" "))
println(listRDD.mapPartitionsWithIndex(
(index, datas) => {
datas.map {(index,_)} //因为只有一行代码,所以可以用()
}
).collect().mkString(" "))
println(listRDD.mapPartitionsWithIndex(
(index, datas) => {//只有一行代码,可以用()
datas.map((index,_))
}
).collect().mkString(" "))
println(listRDD.mapPartitionsWithIndex(
(index, datas) => (
datas.map((index,_))
) //**单行用()可以运行,但是不推荐**
).collect().mkString(" "))
//case偏函数
val result: RDD[(String, Int)] = rdd1.map
{
//case的偏函数必须用{},哪怕是只一行代码也不能用(), 而且{}不能省略
case (k, v) => { (k, v.size) } //只一行代码,{}可以省略
//case (k, v) => (k, v.size) 也可以
}