Scala 匿名函数与参数类型推断(简写)

  没有名字的函数就是匿名函数,如下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

}

  

原文地址:https://www.cnblogs.com/noyouth/p/12818054.html