没有名字的函数就是匿名函数,如下map中传递就是一段匿名函数
list.map((n: Int) => n + 1)
参数类型推断案例1,单个参数
①因为map中函数的参数类型是可以推断出来的,所以可以省略类型。所谓可以推断,list的泛型和map参数要求的泛型已经确定。
list.map((n) => n + 1)
②因为只有一个参数,所以省略小括号
list.map(n => n + 1)
③因为这个参数在表达式右边只出现了一次,所以可以用下划线_代替
list.map(_ + 1)
参数类型推断案例2,多个参数。
当有多个参数且每个参数在表达式右边也只出现一次时,也可以用下划线简写,但是下划线的顺序与左边参数的顺序一致。
def main(args: Array[String]): Unit = { val list = List(1, 2, 3, 4, 5) val res1 = list.reduce((n1, n2) => n1 - n2) val res2 = list.reduce(_ - _) println(res1) // -13 println(res2) // -13 val res3 = list.reduce((n1, n2) => n2 - n1) println(res3) // 3 }