Avatar ·

O que significa o operador * (asterisco) antes de uma variável em Kotlin? Spread Operator

Olá! Estou estudando Kotlin e me deparei com uma sintaxe estranha que não consigo entender. Encontrei este código: ```kotlin val numbers = listOf(1, 2, 3) val moreNumbers = listOf(0, *numbers.toTypedArray(), 4, 5) println(moreNumbers) // [0, 1, 2, 3, 4, 5] ``` O que significa o asterisco `*` antes de `numbers.toTypedArray()`? Eu sei que em Java existe um operador semelhante para desempacotar arrays, mas em Kotlin estou acostumado a trabalhar com listas e arrays de forma diferente. Tentei escrever um código parecido sem o asterisco: ```kotlin val wrong = listOf(0, numbers.toTypedArray(), 4, 5) println(wrong) // [0, [Ljava.lang.Integer;@..., 4, 5] ``` O resultado foi algo sem sentido — o array foi inserido como objeto na lista, e não seus elementos. Como usar esse operador corretamente? Existem alternativas? E por que em Kotlin, que é considerado mais moderno, ainda é necessária uma construção tão "antiga"? Agradeço pela explicação com exemplos, especialmente para casos com funções que aceitam vararg.