val result = example(10, 20, ::test2) //结果30
//如果函数类型参数是最后一个参数:
val result = example(10, 20){n1, n2-> //结果为30
n1+n2
}
}
高阶函数作用:高阶函数允许让函数类型的参数来决定函数的执行逻辑,只要传入不同的函数类型参数,执行逻辑和返回结果就可能完全不同。
高阶函数的Lambda表达式在编译后,在底层被转换成了匿名类的实现方式,每一次调用Lambda表达式,都会创建一个新的匿名类实例,就会造成额外的内存和性能开销。为了解决这个问题,就需要使用内联函数,只需要在高阶函数前面加上 inline 关键字即可。
inline fun example(a:Int, b:Int, func:(Int, Int)->Int):Int{
return func(a, b)
}
Kotlin 编译器会将内联函数中的代码在编译的时候自动替换到调用它的地方。分两步:
1、Kotlin编译器将Lambda表达式中的代码替换到函数类型参数调用的地方
2、将内联函数中的全部代码替换到函数调用的地方
问:Kotlin中委托类和委托属性
答:委托
《Android学习笔记总结+最新移动架构视频+大厂安卓面试真题+项目实战源码讲义》
【docs