Verwenden Sie das Schlüsselwort with in Kotlin
- Generieren Sie ein Kotlin-Projekt
- Rufen Sie ein Objekt explizit in Kotlin auf
-
Verwenden Sie das Schlüsselwort
with
, um ein Objekt implizit ohne Rückgabewert in Kotlin aufzurufen -
Verwenden Sie das Schlüsselwort
with
, um ein Objekt implizit mit einem Rückgabewert in Kotlin aufzurufen - Abschluss
In der objektorientierten Programmierung haben wir gelernt, dass Objekte aus Eigenschaften und Methoden bestehen. Um auf diese Details zuzugreifen, rufen wir sie ausdrücklich mit dem .
auf. -Operator und geben dann den Feld- oder Eigenschaftsnamen an.
Dies ist der häufig verwendete Ansatz in den meisten Programmiersprachen bei der Arbeit mit Objekten, aber es ist nicht der einzige Weg. Wir können die Mitgliedseigenschaften und -methoden eines Objekts implizit mithilfe von Generika und Lambda-Ausdrücken aufrufen.
In diesem Tutorial lernen wir, wie man implizit die Member-Eigenschaften und -Methoden eines Objekts aufruft.
Generieren Sie ein Kotlin-Projekt
Öffnen Sie die IntelliJ-Entwicklungsumgebung und wählen Sie Datei > Neu > Projekt
. Geben Sie im sich öffnenden Fenster den Projektnamen als kotlin-with
ein, wählen Sie Kotlin im Abschnitt Sprache und Intellij im Abschnitt Build-System aus.
Erstellen Sie eine Datei namens Main.kt
im Ordner src/main/kotlin
und kopieren Sie den folgenden Code und fügen Sie ihn in die Datei ein.
data class Music(val id: Int,
val title: String,
val genre: String,
val duration: Int);
fun fetchMusic(): ArrayList<Music>{
return arrayListOf(
Music(1,"Passing me by","Hip hop",5),
Music(2,"Lose yourself","Hip hop",3),
Music(3,"Smoke on the water","Classic songs",6),
Music(4,"Born to the wild","Classic songs",2),
Music(5,"Real love","Rhythm and blues",6)
);
}
Dieser Code erstellt eine Methode namens fetchMusic()
, die eine ArrayList von Objekten zurückgibt, die mit der Datenklasse Music
erstellt wurden. Wir werden die von der Musikmethode fetchMusic()
zurückgegebene Liste verwenden, um unsere Beispiele in den nächsten Abschnitten zu veranschaulichen.
Rufen Sie ein Objekt explizit in Kotlin auf
Kopieren Sie den folgenden Code und fügen Sie ihn nach der Methode fetchMusic()
in die Datei Main.kt
ein.
fun callingAnObject(){
val songs = fetchMusic();
songs.forEach(::println);
}
fun main(){
callingAnObject();
}
Die Funktion namens callingAnObject()
verwendet die Liste, die wir oben erstellt haben, um explizit die Methode forEach()
aufzurufen, um alle Elemente in der Liste in der Konsole zu protokollieren. Beachten Sie, wie wir das Listenobjekt explizit songs.forEach()
nennen, wie im vorherigen Abschnitt erwähnt.
In den nächsten Abschnitten werden wir sehen, wie das Objekt songs
implizit aufgerufen wird, um Zugriff auf beliebige Member-Variablen oder -Methoden zu erhalten. Führen Sie dieses Beispiel aus und stellen Sie sicher, dass die Ausgabe wie unten gezeigt ist.
Music(id=1, title=Passing me by, genre=Hip hop, duration=5)
Music(id=2, title=Lose yourself, genre=Hip hop, duration=3)
Music(id=3, title=Smoke on the water, genre=Classic songs, duration=6)
Music(id=4, title=Born to the wild, genre=Classic songs, duration=2)
Music(id=5, title=Real love, genre=Rhythm and blues, duration=6)
Verwenden Sie das Schlüsselwort with
, um ein Objekt implizit ohne Rückgabewert in Kotlin aufzurufen
Kommentieren Sie das vorherige Beispiel aus und kopieren Sie den folgenden Code und fügen Sie ihn nach dem Kommentar in die Datei Main.kt
ein.
fun usingWithWithoutReturnValue(){
val songs = fetchMusic();
with(songs){
println(isEmpty());
println(add(Music(6,"Many rivers to cross","reggae",3)))
println(forEach(::println));
}
}
fun main(){
usingWithWithoutReturnValue();
}
Normalerweise verwenden wir die Funktion with()
in Kotlin, wenn wir ein Objekt implizit aufrufen möchten, wie in diesem Beispiel gezeigt. Beachten Sie, wie wir die Methoden isEmpty()
, add()
und forEach()
implizit die Liste aufrufen, ohne ihr Objekt zu verwenden.
Die Funktion with()
verwendet diese Liste als Empfänger und ruft jedes Feld oder jede Methode der Liste hinter den Kulissen auf, sobald wir danach fragen, und das Ergebnis wird zurückgegeben. In diesem Anwendungsfall gibt die Funktion with()
keine Werte zurück, sondern protokolliert sie in der Konsole.
Im nächsten Abschnitt werden wir sehen, wie das Ergebnis des Aufrufs im Hintergrund zurückgegeben wird. Führen Sie dieses Beispiel aus und stellen Sie sicher, dass die Ausgabe wie unten gezeigt ist.
false
true
Music(id=1, title=Passing me by, genre=Hip hop, duration=5)
Music(id=2, title=Lose yourself, genre=Hip hop, duration=3)
Music(id=3, title=Smoke on the water, genre=Classic songs, duration=6)
Music(id=4, title=Born to the wild, genre=Classic songs, duration=2)
Music(id=5, title=Real love, genre=Rhythm and blues, duration=6)
Music(id=6, title=Many rivers to cross, genre=reggae, duration=3)
Verwenden Sie das Schlüsselwort with
, um ein Objekt implizit mit einem Rückgabewert in Kotlin aufzurufen
Kommentieren Sie das vorherige Beispiel aus und kopieren Sie den folgenden Code und fügen Sie ihn nach dem Kommentar in die Datei Main.kt
ein.
fun usingWithContainingReturnValue(): Music {
val songs = fetchMusic();
val song = with(songs) {
get(1)
}
return song;
}
fun main(){
println(usingWithContainingReturnValue());
}
Im vorherigen Beispiel haben wir erwähnt, dass with()
eine Eigenschaft oder Methode dieser Liste hinter den Kulissen aufruft und das Ergebnis des Aufrufs zurückgibt. Dieses Beispiel zeigt, wie das vom Aufruf zurückgegebene Ergebnis abgerufen wird.
In diesem Beispiel haben wir die with()
-Methode verwendet, um das songs
-Objekt explizit aufzurufen, um das Objekt am Index 1
mit der get()
-Methode zurückzugeben. Beachten Sie, wie wir die Methode get()
innerhalb der Funktion with()
aufrufen, ohne ihr Objekt zu verwenden.
Beachten Sie, dass das von der einschließenden Funktion zurückgegebene Objekt vom Typ Musik
ist. Führen Sie diesen Code aus und stellen Sie sicher, dass die Ausgabe wie unten gezeigt ist.
Music(id=2, title=Lose yourself, genre=Hip hop, duration=3)
Abschluss
In diesem Tutorial haben wir gelernt, wie man die with()
-Methode verwendet, die uns hilft, ein Objekt implizit aufzurufen. Die beiden Anwendungsfälle, die wir behandelt haben, umfassen den impliziten Aufruf eines Objekts ohne Rückgabewert und den impliziten Aufruf eines Objekts mit einem Rückgabewert.
David is a back end developer with a major in computer science. He loves to solve problems using technology, learning new things, and making new friends. David is currently a technical writer who enjoys making hard concepts easier for other developers to understand and his work has been published on multiple sites.
LinkedIn GitHub