【2023】Kotlin教程 第二篇 面向对象与函数式编程 第13章 函数式编程基石——高阶函数和Lambda表达式 13.5 内联函数 13.5.1 自定义内联函数

【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表达式。

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/weixin_44226181/article/details/130024499
今日推荐