在整个代码中使用kotlin扩展是一个好主意吗?
我很想念来自iOS的扩展,但这是在android中使用这些东西的好方法吗?参考http://antonioleiva.com/kotlin-android-extension-functions/
有更好的解决方案吗?
为了进一步扩展Andrey Breslav的答案,Kotlin扩展功能确实可以编译为静态java方法,因此大多数通用扩展功能都不会产生开销。但是,在这种情况下,您需要注意在Google IO演讲的前几分钟,杰克·沃顿(Jake Wharton)的呼唤。
那就是当您传递高阶函数(lambda)作为扩展函数的参数时,如下所示:
fun View.doSomething(block: () -> Unit) {
//do something
}
这段代码会降低性能,因为内部的lambda必须在内部创建一个匿名类,这可能会消耗方法并导致类加载。这是一个非常简单的修复,方法inline
是在函数中添加关键字,这实际上会将您的代码内联到所有此调用站点函数中,因此您不会在每次调用扩展函数时都受到性能影响。
inline fun View.doSomething(block: () -> Unit) {
//do something
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句