inline
- 内联函数:使用
inline声明的函数,在编译时将会拷贝到调用的地方。
noinline
- 在内联函数中,当有多个
lambda作为参数时,可以在不想内联的lambda前使用noinline声明.
crossinline
- 避免内联函数中的
return影响程序流程。
- crossinline修饰的lambda
不能直接使用return语句,但可以使用可return@label语句。
sample
private fun toEllipsisTest(){
val mStr = "Kotlin 是一门现代但已成熟的编程语言,旨在让开发人员更幸福快乐。"
val result = mStr.toEllipsis {
return@toEllipsis "你好 " //return@label语句返回
}
println(result)
}
//crossinline修饰,避免内联函数中的return影响程序流程
private inline fun String.toEllipsis(crossinline prefix: () -> String = { "" }): String {
val invoke = prefix.invoke()
val ellipsis = if (this.length>25){
this.substring(0,25)+ "..."
}else{
this
}
return "$invoke$ellipsis"
}
你好 Kotlin 是一门现代但已成熟的编程语言,旨在让...