0
点赞
收藏
分享

微信扫一扫

安卓kotlin面试题 91-100

niboac 2024-03-13 阅读 8
 91. 阐述Kotlin中性能优化之局部函数 ?
就是像正常定义普通函数的语法一样,在其他函数体内部声明该函数。这些被称为局部函数,它们能访问到外部函数的作用域。

fun someMath(a: Int): Int {
        fun sumSquare(b: Int) = (a + b) * (a + b)

        return sumSquare(1) + sumSquare(2)
}
局部函数最大的局限性: 局部函数不能被声明成内联的(inline)并且函数体内含有局部函数的函数也不能被声明成内联的(inline). 在这种情况下没有任何有效的方法可以帮助你避免函数调用的开销。

经过编译后,这些局部函数会将被转化成Function对象, 就类似lambda表达式一样,并且同样具有上篇文章part1中讲到的关于非内联函数存在很多的限制。反编译后的java代码:

public static final int someMath(final int a) {
        Function1 sumSquare$ = new Function1(1) {
                // $FF: synthetic method
                // $FF: bridge method
                //注: 这是Function1接口生成的泛型合成方法invoke
                public Object invoke(Object var1) {
举报

相关推荐

0 条评论