Verwendung von Inline-Funktionen in Kotlin
-
Kotlin
inline
-Funktionen - Verwenden Sie Kotlin-Inline-Funktionen mit verifizierten Typparametern
-
Verwenden Sie
noinline
in Kotlininline
-Funktionen
Die meisten Kotlin-Projekte verwenden höherwertige Funktionen, die für Ihre Kotlin-Projekte problematisch sein können. Jede Funktion höherer Ordnung ist ein Objekt einer Klasse und muss daher abgeschlossen werden.
Dies bedeutet, dass höherwertige Funktionen bei jedem Aufruf Speicherzuweisungen erfordern. Somit führt jeder Aufruf einer höherwertigen Funktion zu einem Laufzeit-Overhead.
Kotlin bietet inline
-Funktionen, um dieses Problem zu lösen. Dieser Artikel stellt das Konzept der Kotlin-Inline-Funktionen vor und wann wir sie für eine bessere Speichereffizienz verwenden können.
Kotlin inline
-Funktionen
Kotlin inline
-Funktionen werden mit dem Schlüsselwort inline
deklariert. Wir müssen das Schlüsselwort direkt vor der Deklaration der Funktion schreiben.
Die Verwendung von Kotlin-Inline-Funktionen verbessert die Speichereffizienz von Funktionen höherer Ordnung. Wenn wir inline
-Funktionen verwenden, weisen sie den Compiler an, den Funktionscode auf die Aufrufseite zu kopieren, wodurch die Speicherzuweisung verhindert wird.
Hier ist ein einfaches Beispiel für die Kotlin-Funktion inline
.
fun main(args: Array<String>) {
exampleFunc({ println("This function will call our inline function")})
}
inline fun exampleFunc(Func: () -> Unit ) {
Func()
print("This is an inline function call and doesn't require memory allocation")
}
Ausgang:
Wann man inline
-Funktionen nicht verwenden sollte
Während inline
-Funktionen eine hervorragende Möglichkeit bieten, höhere Funktionen effizienter zu gestalten, gibt es einige Deklarationen und Szenarien, die ihre Verwendung nicht unterstützen, darunter:
- Lokale Klassendeklaration
- Innere verschachtelte Klassendeklaration
- Funktionsausdrücke
- Lokale Funktionsdeklarationen
- Standardwert der optionalen Parameter
Beste Szenarien zur Verwendung von inline
-Funktionen
Die inline
-Funktionen sind nicht in jeder Situation sinnvoll. Hier sind die besten Szenarien zur Verwendung von Kotlin-Inline-Funktionen:
- Beim Zugriff auf Funktionen höherer Ordnung
- Um die Speicherzuordnungseffizienz zu verbessern
- Beim Übergeben eines Funktionstypparameters
- Um einen besseren Kontrollfluss zu erhalten
- Wenn eine Funktion eine andere Funktion als Parameter akzeptiert
- Wenn eine Funktion Lambda als Parameter akzeptiert
Verwenden Sie Kotlin-Inline-Funktionen mit verifizierten Typparametern
Wir können Kotlin-Inline-Funktionen verwenden, um auf den Datentyp des während des Aufrufs übergebenen Parameters zuzugreifen und ihn abzurufen. Das können wir mit dem Modifikator reified
tun.
fun main(args: Array<String>) {
exampleFunction<String>()
}
inline fun <reified S> exampleFunction() {
print(S::class)
}
Ausgang:
Verwenden Sie noinline
in Kotlin inline
-Funktionen
Wenn wir eine Funktion als inline
deklarieren, werden alle ihre Parameter zu inline
. Wenn wir jedoch möchten, dass nur einige Parameter inline
sind, können wir den Modifikator noinline
verwenden.
Alle Ausdrücke, vor denen wir den Modifikator noinline
verwenden, sind nicht inline.
Betrachten Sie dieses Beispiel, um die Verwendung von noinline
in Kotlin-inline
-Funktionen zu verstehen.
fun main(args: Array<String>){
println("Start")
inlineFuncExample({ println("This is the first expression/parameter")
return }, // This will not throw an error as it is an inline expression
{ println("This is the first expression/parameter")
return } ) // This will throw an error as it is not an inline expression
println("End")
}
inline fun inlineFuncExample( para1: () -> Unit, noinline para2: () -> Unit ) {
para1()
para2()
}
Ausgang:
Kailash Vaviya is a freelance writer who started writing in 2019 and has never stopped since then as he fell in love with it. He has a soft corner for technology and likes to read, learn, and write about it. His content is focused on providing information to help build a brand presence and gain engagement.
LinkedIn