Scala中的下划线(underscore)到底有多少种应用场景
2016-10-20 本文已影响0人
dataMaster
-
作为"通配符”,import导入包的所有成员,类似Java中的*。如import scala.math._
-
_*
作为一个整体,告诉编译器你希望将某个参数当作参数序列处理!例如val s = sum(1 to 5:_*)就是将1 to 5当作参数序列处理。 -
占位符,指代一个集合中的每个元素。比如对collection或sequence调用方法map、filter、sortWith、foreach等等表示对每一个元素进行处理。例如我们要在一个Array a中筛出偶数,并乘以2,可以用以下办法:
a.filter(%2==0).map(2*)
List(1,2,3).foreach(println(_)) -
在元组中,可以用方法_1, _2, _3访问组员。如a._2。其中句点可以用空格替代。
("a","b","c")._3 -
使用模式匹配可以用来获取元组的组员,n来取得第n个元素。
例如:
val t = ("a","b","c")
val (first, second, third) = t
但如果不是所有的部件都需要,那么可以在不需要的部件位置上使用。
比如上一例中val (first, second, _) = t -
下划线代表的是某一类型的默认值,对变量进行默认初始化。
对于Int来说,var i:Int=,i是0。
对于Double来说,它是0.0
对于引用类型,它是null。
List(1,2,3).foreach(println(_)) -
类的setter方法,比如类A中定义了var f,则相当于定义了setter方法 f_=。也可以自己定义f_= 方法来完成更多的事情,比如设置前作一些判断或预处理之类的操作