Sobes.tech
Junior

Co je to operátor 'spread' v Kotlinu a jak ho používat?

sobes.tech AI

Odpověď od AI

Operátor 'spread' v Kotlinu odpovídá předponě * před polem nebo rozptýleným polem (vararg). Používá se k předání prvků takové kolekce funkci, která očekává proměnný počet argumentů (vararg). V podstatě "rozprostí" (spread) kolekci na samostatné argumenty.

Příklad použití:

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

fun main() {
    val intArray = intArrayOf(1, 2, 3)
    printNumbers(*intArray) // Použití operátoru spread
}

Bez operátoru *, by pokus předat intArray funkci printNumbers vedl k chybě kompilace, protože printNumbers očekává proměnný počet Int, nikoliv pole Int.

Operátor 'spread' lze také použít při vytváření nového pole spojením existujícího pole s jednotlivými prvky nebo jinými poli:

fun main() {
    val array1 = arrayOf(1, 2)
    val array2 = arrayOf(3, 4)
    val combinedArray = arrayOf(*array1, 5, *array2) // Použití operátoru spread
    println(combinedArray.contentToString()) // Vypíše [1, 2, 5, 3, 4]
}

Klíčové body:

  • Platí pouze pro pole (Array, primitivní pole) a Vararg.
  • Rozprostí elementy kolekce do samostatných argumentů funkce nebo do prvků nového pole.
  • Označuje se prefixem *.