
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