当前位置:   article > 正文

安卓kotlin面试题 91-100

安卓kotlin面试题 91-100
 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) {
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/Cpp五条/article/detail/234189
推荐阅读
相关标签
  

闽ICP备14008679号