目录
1.匿名函数参数占位符:
当匿名函数传递给方法或其他函数时,如果该匿名函数的参数在=>的右侧只出现一次,
那么就可以省略=>,并将参数用下划线代替。这对一元函数和二元函数都适用。(_+_)
2.无用匿名函数参数
当匿名函数的参数未被实际使用时,可以不给它一个命名,而是用下划线代替,但是不可以在print中使用
3.泛型定义中的通配符
在Java中用问号来指代泛型中不确定类型的定义(如List<?>)。Scala用下划线来代替它
4.模式匹配中的通配符/占位符
得益于Scala模式匹配(pattern matching)的强大,下划线在模式匹配中的用途非常灵活。它除了可以用来代替Java switch-case表达方式中的default之外,还可以占位表示其他元素甚至类型
5.导入语句中的通配符
下划线可以实现Java import语句中星号的作用,但功能更强大一些。利用它还能导入时做
重命名,以及忽略某些类
导入包中的所有类(作为包引入的通配符),也可以将导入包的类重新命名
在导入某个包中的类时屏蔽掉某个类(例如不导入Timer类)
6.变量默认值初始化
用下划线可以自动在变量声明时,将其赋予默认的初始值。
7.访问元组(作为元组索引的前缀)
下划线后面跟着数字k,可以当作索引表示元组中的第k个元素。当要忽视元组中的某个值时,也可以用下划线替代他
8.声明setter()方法
scala中没有显式的setter方法,需要在getter方法的命名后加上一个下划线来当作setter方法使用
9.变长参数的转化
下划线与星号连用,可以将序列转化为变长参数的序列,方便调用变长参数的方法
10.将方法转换成函数
我们都知道Scala中方法与函数的不同点。其中最显著的不同就在于,函数在Scala中是一种对象实例,因此它可以赋值给变量,也可以作为参数。如果方法在赋值时直接写名称的话,编译器会认为是对方法的调用,因此会报没有参数列表的错误。在方法名称后加一个下划线,会将其转化为偏应用函数(partially applied function),就能直接赋值了
11.定义偏应用函数(代替暂时不想传递的参数)
既然偏应用函数就是不提供或者只提供部分参数调用时返回的函数,我们也可以用下划线
来代替那些不提供的参数