赞
踩
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) { |
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。