18-函数类型
11.4.2 函数类型
对于接收另一个函数作为参数的高阶函数,使用前必须为这个参数指定函数类型。代码如下。
fun <T> max(collection: Collection<T>, less: (T, T) -> Boolean): T? {
var max: T? = null
for (it in collection)
if (max == null || less(max, it))
max = it
return max
}
参数less是一个函数,类型为(T, T) -> Boolean。该参数接收两个类型为T的参数并返回一个布尔值结果,如果第一个参数值小于第二个参数值,那么该函数返回true,否则返回false。
如果将函数类型声明为可空变量,则可以使用括号将整个函数类型括起来并在其后加上问号。代码如下。
var sum: ((Int, Int) -> Int)? = null