为什么这么说呢,难道我自己多年使用的方式错了嘛,是的,你没错,我错了,哈哈,主要原因是使用Tuple的时候容易搞错对象,Tuple2的时候还知道第一个参数跟第二个参数的意思,后面多来个几参数你会记得_1._2._3._4代表的意思是什么吗?代码结构也不好维护,所以请结束使用Tuple吧
请开始你的表演
正常使用Tuple
val list = Array((1,2,3,4),(5,6,7,8))
list.filter(_._1>0).map(_._2).foreach(println)
你说你说,再过几天你还记得_1,_2是什么意思吗,假设list是个变量从其它地方传过来,蛋就更加的疼了,当然了,有小伙伴又说了,我使用case class 不就解决这样的问题了吗?有道理,那如果业务有很多case class 呢?维护起来是不是也很复杂,说了半天,快直接说答案,来了来了,这就一一道来。
正确的打开方式
使用匿名类
new {
val id:Int
...
}
正确例子
val list = Array(
new {
val id: Int = 1
val age: Int = 2
val add: Int = 3
val name: Int = 4
},
new {
val id: Int = 5
val age: Int = 6
val add: Int = 7
val name: Int = 8
}
)
list.filter(_.id>0).map(_.age).foreach(println)
我告诉你,我这项目我过N年都记得它每个字段的意思,而且还可以随时加字段。哈哈~~~
网友评论