Sobes.tech
Junior

Czym jest operator 'spread' w Kotlin i jak go używać?

sobes.tech AI

Odpowiedź od AI

Operator 'spread' w Kotlinie odpowiada prefiksowi * przed tablicą lub rozproszoną tablicą (vararg). Służy do przekazywania elementów takiej kolekcji do funkcji oczekującej zmiennej liczby argumentów (vararg). W zasadzie "rozszerza" (spread) kolekcję na oddzielne argumenty.

Przykład użycia:

fun printNumbers(vararg numbers: Int) {
    for (number in numbers) {
        println(number)
}
}

fun main() {
    val intArray = intArrayOf(1, 2, 3)
    printNumbers(*intArray) // Użycie operatora spread
}

Bez operatora *, próba przekazania intArray do funkcji printNumbers spowodowałaby błąd kompilacji, ponieważ printNumbers oczekuje zmiennej liczby Int, a nie tablicy Int.

Operator 'spread' można również używać podczas tworzenia nowej tablicy, łącząc istniejącą tablicę z pojedynczymi elementami lub innymi tablicami:

fun main() {
    val array1 = arrayOf(1, 2)
    val array2 = arrayOf(3, 4)
    val combinedArray = arrayOf(*array1, 5, *array2) // Użycie operatora spread
    println(combinedArray.contentToString()) // Wyświetli [1, 2, 5, 3, 4]
}

Kluczowe punkty:

  • Dotyczy tylko tablic (Array, tablice prymitywne) i Vararg.
  • Rozszerza elementy kolekcji na oddzielne argumenty funkcji lub elementy nowej tablicy.
  • Oznaczany jest prefiksem *.