Kotlin 面试题
目录

Kotlin 中什么是内联函数 (Inline Function)?

· 约 2 分钟读完 · 第 57 / 200 章

推荐答案

在 Kotlin 中,内联函数(Inline Function)是通过 inline 关键字声明的函数。内联函数的主要特点是在编译时会将函数体直接插入到调用处,而不是像普通函数那样通过函数调用的方式执行。这种方式可以减少函数调用的开销,尤其是在高阶函数中使用时,可以避免额外的对象创建和函数调用。

本题详细解读

什么是内联函数?

内联函数是通过 inline 关键字声明的函数。它的主要作用是在编译时将函数体直接插入到调用处,而不是通过函数调用的方式执行。这种方式可以减少函数调用的开销,尤其是在高阶函数中使用时,可以避免额外的对象创建和函数调用。

内联函数的语法

在上面的例子中,inlineFunction 是一个内联函数,它接受一个 lambda 表达式作为参数,并在函数体内执行这个 lambda 表达式。

内联函数的优点

  1. 减少函数调用开销:内联函数在编译时会将函数体直接插入到调用处,避免了函数调用的开销。
  2. 避免高阶函数中的额外对象创建:在高阶函数中,使用内联函数可以避免创建额外的函数对象,从而提高性能。

内联函数的限制

  1. 不能递归调用:内联函数不能递归调用自身,因为递归调用会导致函数体无限展开。
  2. 不能使用非局部返回:内联函数中的 lambda 表达式不能使用非局部返回(即从外层函数返回)。

示例代码

在这个例子中,measureTimeMillis 是一个内联函数,它接受一个 lambda 表达式作为参数,并测量执行该 lambda 表达式所花费的时间。由于 measureTimeMillis 是内联的,编译器会将函数体直接插入到调用处,从而避免了函数调用的开销。