inline
修飾子を正しく使用する方法を理解しようとしています。 docsに記載されているように、過剰割り当てを防ぐためにラムダをインライン展開する一般的なケースを理解しています。lambdaなしでインラインで使う理由
私はkotlin STDLIBを検査し、コードの_Strings.kt
次作品で見つかりました:
@kotlin.internal.InlineOnly
public inline fun CharSequence.elementAtOrNull(index: Int): Char? {
return this.getOrNull(index)
}
ここinline
を使用しての背後にある理由は何ですか?
私の例では、余分なメソッド宣言だけが表示されます。その場合、なぜインラインでメソッドをマークしたくないのですか?ドキュメントは、大規模なメソッドをインライン展開すると生成されるコードが大きくなるため、100行以下のすべてのメソッドにインラインを追加する必要がありますか? – mol
クラス内のバッキングフィールドを使用するメソッドをインライン化することはできません。拡張メソッドは、追加パラメータとして拡張しているクラスを技術的に受け取っているため、実際には追加されないため、この問題は発生しません。 – dillius