_
(下划线)这个字符在 Scala 中似乎无处不在,到目前为止,它可能是 Scala 中使用最广泛的符号。
使用场景清单:
-
作为包引入的通配符
-
作为元组索引的前缀.
val names: (String, String) = ("lisi", "zs")
names._1
names._2
- 作为函数值的隐式参数
println(list.map(_ * 2))
// 等价于
println(list.map(ele => ele * 2))
-
利用默认值初始化字段
-
用于在函数名中混合操作符
Scala 不允许直接使用字母和数字字 符的操作符。例如,foo:
是不允许的,但是可以通过使用下划线来绕过这个限制, 如foo_:
// 错误
def foo:(a : Int) = {
}
// 正确
def foo_:(a :Int){
}
-
在模式匹配时作为通配符.
-
在处理异常时, 在
catch
在代码块中和case
联用 -
作为分解操作的一部分. 例如,
max(arg: _*)
在将数组或者列表参数传递给接受可变长度参数的函数前,将其分解为离散的值。 -
用于部分应用一个函数。例如,在代码片段
val square = Math.pow(_: Int, 2)
中,我们部分应用了pow()
方法来创建了一个square()
函数。