本章节讲述Kotlin中内联函数的相关知识
简介
在 Kotlin 中, inline函数是一个高阶函数修饰符,当一个函数标记为 inline 时,该函数的字节码将直接复制到调用代码中,这在某些情况下可以提高性能。
即把函数体复制粘贴到函数调用处。
代码
private fun getSum(i1: Int, i2: Int): Int {
return i1 + i2
}
普通方法,计算两个数值类型的和。
调用
val result = getSum(10,20)
Log.d("KotlinActivity", "result :$result")
结果
D/KotlinActivity: result :30
kotlin代码编译成java代码(部分)
getSum声明的是普通方法,编译成java代码后也能看出,就是调用getSum这个普通的方法。
那么我们把上述的getSum改成内联函数,结果会是什么呢?
内联函数
private inline fun getSum(i1: Int, i2: Int): Int {
return i1 + i2
}
调用不变,看下结果
D/KotlinActivity: result :30
结果也不变,看下编译成java代码
也就是说,普通函数getSum改成inline内联函数后,编译成java代码中,调用处没有调用改方法,而是把该函数体复制粘贴到函数调用处。这就是内联函数和普通函数的区别。
总结
内联函数的本质就是:函数体复制粘贴到函数调用处。