【2023】Kotlin教程
第二篇 面向对象与函数式编程
第13章 函数式编程基石——高阶函数和Lambda表达式
函数式编程思想虽然与面向对象一样立即悠久,但是支持函数式编程的计算机语言不过是近几年的事情。这些语言有Swift、Python、Java 8和C++ 11等,作为新生的语言Kotlin也支持函数式编程。
13.5 内联函数
在高阶函数中参数如果是函数类型,则可以接收Lambda表达式,而Lambda表达式在编译时被编译成为一个匿名类,每次调用函数时都会创建一个对象,如果这种被函数反复调用则创建很多对象,会带来运行时额外开销。
为了解决此问题,在Kotlin中可以将这种函数声明为内联函数。
【提示】 内联函数在编译时不会生成函数调用代码,而是用函数体中实际代码替换每次调用函数。
13.5.1 自定义内联函数
Kotlin 标准库提供了很多常用的内联函数,开发人员可以自定义内联函数,但是如果函数参数不是函数类型,不能接收Lambda表达式,那么这种函数一般不声明为内联函数。声明内联函数需要使用关键字inline修饰。
举个栗子:
// 内联函数
inline fun calculatePrint(funN: (Int, Int) -> Int) {
println("${
funN(10, 5)}")
}
fun main() {
calculatePrint {
a, b -> a + b }
calculatePrint {
a, b -> a - b }
}
上述代码声明了一个内联函数calculatePrint,它的参数是(Int,Int)->Int
函数类型,它可以接收Lambda表达式。