Inicializando matrices en kotlin

Estoy haciendo un generador de haiku en kotlin pero estoy obteniendo una extraña 'variable. FirstLineArray debe ser inicializado' en este bloque de código.

import java.util.Random fun oneSyllableWords() : String{ val oneSyllableWordArray = arrayOf("Life", "Love", "One", "On", "No", "Go") val random = Random() val randint = random.nextInt(oneSyllableWordArray.size) return oneSyllableWordArray[randint] } fun main(args:Array<String>){ var firstLineArray : Array<String> var syllablesRemaining = 5 while(syllablesRemaining<0) { val random = Random() val randint = random.nextInt(4) + 1 for (i in 0..4){ if(randint == 1){ firstLineArray[i] = oneSyllableWords() } } } } 

    Tienes que inicializar tu variable con un valor. Las matrices son contenedores de tamaño fijo, si tengo razón en que necesita una matriz con una longitud de 5 aquí, puede usar lo siguiente para crearla con 5 cadenas vacías como inicio:

     var firstLineArray: Array<String> = Array(5) { "" } 

    ¿O si está de acuerdo con tener un Array<String?> Y tener que lidiar con posibles valores null cuando lee de la matriz, puede hacer:

     var firstLineArray: Array<String?> = arrayOfNulls(5) 

    te olvidas de iniciar la matriz:

    Formas:

     var firstLineArray = Array<String>() 

    o

     var firstLineArray = Array (0, { i -> "" }) 

    o

     var firstLineArray = emptyArray<String>() 

    Puede inicializar una matriz String por el siguiente código:

     var firstLineArray = arrayOfNulls<String>(5) 

    El código anterior dará una matriz de cadenas que contiene nulo. Devuelve Array<String?>

     var firstLineArray = Array<String>(5) { "it = $it" } // returns Array<String> var firstLineArray = arrayOf("a", "b", "c", "d", "e") // returns Array<String>