Kotlin-Spread-Operator

David Mbochi Njonge 20 Juni 2023
  1. Generieren Sie ein Kotlin-Projekt
  2. Übergeben Sie mehrere Argumente in Kotlin
  3. Übergeben Sie mehrere Argumente mit dem Spread-Operator in Kotlin
  4. Übergeben Sie mehrere Argumente mit einem primitiven Typarray in Kotlin
  5. Abschluss
Kotlin-Spread-Operator

Der Spread-Operator (*) wird in den meisten Programmiersprachen wie Kotlin, TypeScript, JavaScript und anderen verwendet.

Der Spread-Operator wird verwendet, um mehrere Argumente an Stellen zu übergeben, an denen mehr als ein Argument erwartet wird. In Kotlin kann der Spread-Operator mit Funktionsparametern verwendet werden, denen das Schlüsselwort vararg vorangestellt ist.

Das Schlüsselwort vararg gibt an, dass eine Funktion eine variable Anzahl von Argumenten akzeptiert und sowohl mit generischen als auch mit nicht generischen Typen verwendet werden kann. In diesem Tutorial erfahren Sie, wie der Spread-Operator funktioniert und wo er in Kotlin verwendet wird.

Generieren Sie ein Kotlin-Projekt

Öffnen Sie die IntelliJ-Entwicklungsumgebung und wählen Sie Datei > Neu > Projekt. Geben Sie den Projektnamen als kotlin-spread-operator ein, wählen Sie Kotlin im Abschnitt Sprache und wählen Sie Intellij im Abschnitt System erstellen.

Drücken Sie abschließend die Schaltfläche Erstellen, um das Projekt zu generieren. Erstellen Sie nach dem Öffnen des Projekts 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.

class House(
    private val id: Int,
    private val houseType: String,
    private val houseLocation: String){

     companion object{
         fun <T> of(vararg houses: T): List<T>{
             val theHouses = ArrayList<T>();
             for (house in houses) {
                 theHouses.add(house);
             }
             return theHouses;
         }
     }

    fun getId(): Int{
        return this.id;
    }

    override fun toString(): String {
        return "House(id=$id, houseType='$houseType', houseLocation='$houseLocation')"
    }

}

In diesem Code haben wir eine Klasse namens House mit den Eigenschaften id, houseType und houseLocation erstellt, die beim Erstellen eines Objekts angegeben werden müssen.

Wir haben auch drei Methoden namens of(), getId() und toString() definiert. Die Methode of() ist in einem Companion-Objekt definiert, um anzuzeigen, dass es sich um eine statische Methode handelt, die aufgerufen werden kann, ohne ein Objekt zu erstellen.

Die Methode getId() gibt die id des aktuellen Objekts zurück, und die Methode toString() hilft uns, eine String-Darstellung unseres Objekts zu erhalten. Wir werden diese Klasse in den nächsten Abschnitten verwenden, um Instanzen zu erstellen, die wir in unseren Beispielen verwenden werden.

Übergeben Sie mehrere Argumente in Kotlin

Kopieren Sie den folgenden Code und fügen Sie ihn nach der Klassendeklaration House in die Datei Main.kt ein.

fun multipleArgumentFunction(){
    val bungalow = House(1,"Bungalow","Seattle");
    val flat = House(2,"Flat","Texas")
    val houses: List<House> = House.of(bungalow, flat);
    houses.forEach(::println);
}

fun main(){
    multipleArgumentFunction();
}

In diesem Code haben wir eine Methode erstellt, die zwei Hausobjekte erstellt und eine Liste dieser Objekte zurückgibt, indem sie die Objekte als Argumente der of()-Methode übergibt.

Sie fragen sich vielleicht, warum wir bei der Definition der statischen of()-Methode zwei Argumente übergeben und dabei einen Parameter angegeben haben. Denken Sie daran, dass wir eine Methode erwähnt haben, die mehr als ein Argument akzeptieren kann, wenn sie das Schlüsselwort vararg enthält.

Beachten Sie, dass die statische Methode of() das Schlüsselwort vararg hat und daher mehr als ein Argument akzeptieren kann. Führen Sie diesen Code aus und stellen Sie sicher, dass die Ausgabe wie unten gezeigt ist.

House(id=1, houseType='Bungalow', houseLocation='Seattle')
House(id=2, houseType='Flat', houseLocation='Texas')

Übergeben Sie mehrere Argumente mit dem Spread-Operator in Kotlin

Wir haben erwähnt, dass ein Spread-Operator verwendet wird, um mehrere Argumente zu übergeben, wenn mehr als ein Argument erwartet wird, und ein Spread-Operator wird normalerweise mit dem Operator * angegeben, der normalerweise dem Objekt vorangestellt wird, das das Datenarray enthält.

Kommentieren Sie den vorherigen Code und kopieren Sie den folgenden Code und fügen Sie ihn nach dem Kommentar in die Datei Main.kt ein.

fun multipleArgumentFunctionWithSpreadOperator(){
    val bungalow = House(1,"Bungalow","Seattle");
    val flat = House(2,"Flat","Texas")

    val apartments: Array<House> = arrayOf(
        House(3,"Apartment","San Francisco"),
        House(4,"Apartment","New York"),
        House(5,"Apartment","Florida")
    );

    val theHouses: List<House> = House.of(bungalow, flat, *apartments);
    theHouses.forEach(::println);
}

fun main(){
    multipleArgumentFunctionWithSpreadOperator();
}

Dieses Beispiel baut auf dem vorherigen Beispiel auf, und in diesem Code haben wir ein Array hinzugefügt, das drei Hausobjekte enthält.

Die Methode of() ermöglicht es uns, eine variable Anzahl von Argumenten zu übergeben; Dieses Array übergeben wir mit dem Spread-Operator an die Methode.

Beachten Sie, dass Sie auch andere einzelne Objekte an die Methode übergeben können.

Wir verwenden die Syntax *Wohnungen, um das Array an die Methode zu übergeben, und alle Objekte im Array sind für den Code innerhalb der Methode verfügbar. Führen Sie den folgenden Code aus und stellen Sie sicher, dass die Ausgabe wie unten gezeigt ist.

House(id=1, houseType='Bungalow', houseLocation='Seattle')
House(id=2, houseType='Flat', houseLocation='Texas')
House(id=3, houseType='Apartment', houseLocation='San Francisco')
House(id=4, houseType='Apartment', houseLocation='New York')
House(id=5, houseType='Apartment', houseLocation='Florida')

Übergeben Sie mehrere Argumente mit einem primitiven Typarray in Kotlin

Kotlin bietet Arrays vom primitiven Typ, darunter IntArray, ShortArray, ByteArray, LongArray und andere.

Wenn wir diese Typen in unserer Anwendung verwenden, sind wir anfällig für Type mismatch-Fehler, und dieses Beispiel zeigt, wie man das löst.

Kommentieren Sie den vorherigen Code und kopieren Sie den folgenden Code und fügen Sie ihn nach dem Kommentar in die Datei Main.kt ein.

fun multipleArgumentFunctionWithTypedArray(){
    val bungalow = House(1,"Bungalow","Seattle");
    val flat = House(2,"Flat","Texas")

    val apartments: Array<House> = arrayOf(
        House(3,"Apartment","San Francisco"),
        House(4,"Apartment","New York"),
        House(5,"Apartment","Florida")
    );

    val apartmentCount: IntArray =
        apartments.map(House::getId).toIntArray();

    val totalHouses: List<Int> =
        House.of(bungalow.getId(),flat.getId(), *apartmentCount.toTypedArray());

    totalHouses.forEach(::println);
}

fun main(){
    multipleArgumentFunctionWithTypedArray();
}

In diesem Beispiel besteht unser Ziel darin, alle an die Methode of() übergebenen id als Sammlung von Ganzzahlen List<Int> zurückzugeben.

Die Methode map() verwendet das Array von Hausobjekten Array<House>, um das Array des primitiven Typs IntArray mit der Methode toIntArray() zurückzugeben.

Um alle id unserer Objekte zurückzugeben, haben wir die id einzelner Objekte mit der Methode getId() an die Methode of() übergeben.

Das restliche Objekt id haben wir mit einem Spread-Operator an die of()-Methode übergeben. Wir haben jedoch zuerst das Array vom primitiven Typ IntArray mithilfe der Methode toTypedArray() in ein regulär typisiertes Array Array<Int> konvertiert, um den Fehler Type mismatch zu verhindern.

Führen Sie diesen Code aus und stellen Sie sicher, dass die Ausgabe wie unten gezeigt ist.

1
2
3
4
5

Abschluss

In diesem Tutorial haben wir gelernt, wie man den Spread-Operator in Kotlin verwendet, und die behandelten Themen umfassen das Übergeben mehrerer Argumente mit dem Spread-Operator und das Übergeben mehrerer Argumente mit dem Spread-Operator. Schließlich haben wir behandelt, wie mehrere Argumente mit einem Array vom primitiven Typ übergeben werden.

David Mbochi Njonge avatar David Mbochi Njonge avatar

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