kotlin-inline

20220724115333

inline

4:00分钟

1
2
3
4
5
fun main() {
hello {
println("Bye")
}
}
不加inline
1
2
3
4
fun hello(postAction: () -> Unit) {
println("Hello!")
postAction()
}

实际编译结果大致

1
2
3
4
5
6
7
fun main(){
val post. = object: Function0<Unit>{
override fun nvoke(){
return prinltn("Bye!")
}
}
}

如果在for(i in 1.. 100) 就会创建很对个对象

加 inline
1
2
3
4
fun hello(postAction: () -> Unit) {
println("Hello!")
postAction()
}

不仅把函数内连过来,也会把它内部的函数的类型的参数 ,lambda表达式也内联过来.

//编译代码 类似

1
2
3
4
fun main(){
println("Hello!");
println("Bye!")
}

这样就不存在,对象的创建

noinline

crossinline

https://www.bilibili.com/video/BV1kz4y1f7sf


kotlin-inline
https://noteforme.github.io/2022/07/24/kotlin-inline/
Author
Jon
Posted on
July 24, 2022
Licensed under