scala中的()和{}的区别总结

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) 也可以
}
 

 

 

 

 

 

 

 

 

 

 

你可能感兴趣的:(Scala)