Kotlin文档本身声明如下:
如果内联函数没有可内联的函数参数,也没有具体化的类型参数,编译器将发出警告,因为内联这样的函数不太可能是有益的。
对于 有人能解释一下语言设计者可能决定将这些方法标记为内联的具体原因吗?谢谢String.kt
中的以下扩展方法,这两个语句(无内联函数参数和没有具体化类型参数public inline fun String.reversed(): String
public inline fun String.slice(indices: Iterable<Int>) : String
public inline fun CharSequence.random(): Char
正如@somethingsomething在评论中指出的,这个问题以前也有过类似的回答。
JetBrains的一名员工给出的答案是:
这个特定函数和kotlin stdlib中的其他一些函数被标记为
@InlineOnly
,这样它们就不会出现在实际的stdlib类文件中,并且只能由kotlin编译器内联。以这种方式实现的目标是减少工件中的方法数量,这对Android很重要。
@InlineOnly
注释也在这个问题中进行了讨论。