12-内联函数声明
11.3.2 内联函数声明
函数支持内联,需要在定义函数时使用inline关键字,内联函数的格式如下。
inline fun 函数名(参数){
函数体
}
目前,内联函数主要应用于函数参数是Lambda表达式的代码中。代码如下。
inline fun process(language:(name:String)-> String):String{
return language("Kotlin")
}
在Kotlin中,使用inline关键字标记的内联函数,既会影响函数本身,也会影响传参的Lambda表达式,这两者都会被内联到调用处。
如果在内联函数中有多个参数,则只需要部分参数内联Lambda表达式即可,可以使用noinline来标记不需要内联的参数。代码如下。
inline fun process(inlined: () -> Unit, noinline notInlined: () -> Unit){
//…
}
内联Lambda表达式只能在内联函数中调用或者作为内联参数使用,可随意使用关键字noinline修饰的Lambda表达式。