Kotlin内联
2020-12-12 本文已影响0人
小楠总
/**
* 不声明inline的时候,不会被平铺,不会被优化
*/
fun test1(block: () -> Unit) {
block()
}
/**
* 声明inline的时候,会被平铺,但是inline的Lambda可以断外部函数
*/
inline fun test2(block: () -> Unit) {
block()
}
/**
* 声明inline的时候,会被平铺
* 声明crossinline的时候,不允许inline的Lambda中断外部函数
*/
inline fun test3(crossinline block: () -> Unit) {
block()
}
fun main(args: Array<String>) {
test1 {
println(1)
}
println(2)
println("------------")
test2 {
println(1)
// 在return的会把外层main函数返回掉了
return
}
println(2)
println("------------")
test3 {
println(1)
// 声明crossinline的时候,不允许inline的Lambda中断外部函数
// return
}
println(2)
println("------------")
}