占位符:
转载自:https://www.cnblogs.com/zzhangyuhang/p/9000088.html
Scala语言为了让函数字面量更加精简,还可以使用下划线作为占位符,用来表示一个或多个参数。
我们用来表示的参数必须满足只在函数字面量中出现一次。
我们用例子来看占位符的用法
1 2 3 4 5 |
|
我们看到 _ 就好像是表达式中需要被填入的空,函数每次调用的时候这个空就被一个传入参数填上
但是参数是依次填入的,不能重复。也就是说,像上例的 1,2,3,4,5.并不能从头再来依次。
1 2 3 4 5 |
|
当然,我们也可以使用多个占位符来表示多个参数。
1 2 3 4 5 |
|
上例中,第一个占位符代表一个参数,第二个代表不同于第一个的参数。
执行过程是这样的,先第一个参数 1 填上第一个占位符,第二个参数 2 填入第二个占位符,注意这里并不是参数列表从新填一次。
执行1+2 = 3.因为reduce,3重新排入list中,list现在为3,3,4,5
然后再次填入,3 + 3,list中变为 6,4,5
依次类推。结果为 15.
占位符也可以代替一个参数列表
1 2 3 4 5 |
|
我们这里用了一个占位符代替了sum方法的参数列表,注意方法和占位符之间要有个空格,因为scala语言中方法名可以定义这样:sum_ 。
val twice1: Double => Double = x => x * 2
val twice2: Double => Double = _ * 2
val twice3 = (x: Double) => x * 2
val twice4 = (_: Double) * 2
val lt1: (Double, Double) => Boolean = (x, y) => x < y
val lt2: (Double, Double) => Boolean = _ < _
val lt3 = (x: Double, y: Double) => x < y
val lt4 = (_: Double) < (_: Double)