1. 内联函数的概念
// inline 关键字标记forEach是一个内联函数
inline fun IntArray.forEach(action: (Int) -> Unit): Unit {
for (element in this) action(element)
}
fun main() {
val ints = intArrayOf(1, 2, 3, 4)
ints.forEach{
println("Hello" $it)
}
// 编译器将上面的代码内联成for循环。编译时替换到调用处
val ints = intArrayOf(1, 2, 3, 4)
for (element in ints) {
println("Hello" $element)
}
}
2. 定义内联函数
在函数定义前加一个关键字 inline, 不一定加了inline就会对效率有增加,高阶函数与内联更配
3. 内联高阶函数的return
4. non-local return
等价于
加一个关键字:crossinline
5. 内联属性
6. 内联函数的限制