本文首发于公众号“AntDream”,欢迎微信搜索“AntDream”或扫描文章底部二维码关注,和我一起每天进步一点点
在Kotlin中,内联函数(inline functions)是一种特殊的函数,通过编译器将函数的调用直接替换为函数体,从而减少函数调用的额外开销。内联函数通常用来优化高阶函数(以函数作为参数的函数)的性能,尤其是在lambda表达式和匿名函数频繁使用的情况下。
内联函数的主要特点:
-
当一个函数被内联 inline 标注后,在调用它的地方,会把这个函数方法体中的所以代码移动到调用的地方,而不是通过方法间压栈进栈的方式。
-
在编译时期,把调用这个函数的地方用这个函数的方法体进行替换
-
应该在带有 lambda 参数的函数使用 inline
-
不带参数,或是带有普通参数的函数,不建议使用 inline
-
inline 可以让函数参数里面的 return 生效
主要作用
- 减少开销:内联函数可以避免函数调用的开销,因为编译器会将函数的代码直接插入到调用点,从而减少栈的开销。
- 提高性能:尤其是在使用高阶函数(函数作为参数或返回值)时,内联函数可以显著提高性能,因为它们避免了创建匿名类实例以及方法调用的开销。
用法
基本用法
fun foo(body:()->Unit) {
ordinaryFunction {
// 因为标识为 inline 的函数会被插入到调用处,此时 return 肯定是 return 到该整个方法
println("zc_testlabama 表达式退出")
return
}
println("zc_test --->foo() end")
}
// 如果不使用 inline, 上面代码会被报错。