函数类型
作为一个接收函数作为参数的函数来说,我们必须指定参数对应的函数类型。比如上述的max函数被定义为如下形式:
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的参数,并且返回一个boolean值。
在max函数的第四行,less被用作一个函数:其通过传递两个参数来进行调用。
函数类型按照上述的类型进行书写,或者可以有被命名的参数,如果你想表达参数的意义可以对参数进行命名。
val compare: (x: T, y: T) -> Int = ...