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. }
5. val list = listOf(1, 2, 3, 4, 5)
6. list.filter(::isOdd)
其中,::用来引用一个函数。
