8.2.9 高阶函数

高阶函数是将函数用作参数或返回值的函数。例如,Iterable的filter函数:

  1. public inline fun <T> Iterable<T>.filter(predicate: (T) -> Boolean): List<T> {
  2. return filterTo(ArrayList<T>(), predicate)
  3. }

它的输入参数predicate: (T) -> Boolean就是一个函数。其中,函数类型声明的语法是:

  1. (X)->Y

表示这个函数是从类型X到类型Y的映射。即这个函数输入X类型,输出Y类型。

这个函数我们这样调用:

  1. fun isOdd(x: Int): Boolean {
  2. return x % 2 == 1
  3. }
  4. val list = listOf(1, 2, 3, 4, 5)
  5. list.filter(::isOdd)

其中,::用来引用一个函数。