为什么使用内联而不使用lambdas
我试图了解如何正确使用inline
修饰符。 我理解一般情况下,当我们内联lambda来防止超额分配,如文档中所述 。
我正在检查kotlin stdlib并在_Strings.kt
找到以下一段代码:
@kotlin.internal.InlineOnly public inline fun CharSequence.elementAtOrNull(index: Int): Char? { return this.getOrNull(index) }
在这里使用inline
的原因是什么?
kotlin-stdlib
中的这个特殊函数和其他一些函数被标记为@InlineOnly
这样它们就不会出现在实际的stdlib类文件中,只能用于Kotlin编译器来内联它们。 通过这种方式实现的目标是减少对Android非常重要的构件中的方法数量。
除此之外,使用不带lambda表达式的inline
函数对于重写类型参数非常有用。
仍然有开销,不管多么微小,都可以避免。
内联扩展属性的类似讨论。
一个关于Kotlin扩展的文章,它涉及字节码效应
我认为这与效率有关。 而不是调用函数elementAtOrNull,因此getOrNull直接调用这个函数。
- 如何设置文本,焦点,在与Kotlin Android的editText错误
- Kotlin – 混淆的属性名称
- 使用Kotlin Anko拍摄照片并显示结果的最佳方法是什么?
- Kotlin android扩展,软件包不能被导入
- 如何写while循环与在kotlin中的responseInputStream.read – (while((i = responseInputStream.read(byteContainer))
- Android选择和取消选择适配器kotlin中的项目的问题?
- 用Kotlin存储的Firebase UI会给出错误
- 无法实例化活动| 引起:kotlin.KotlinNullPointerException
- 在intellij 16中创建Android应用时,Gradle同步失败