Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

568
Visualizações
¿Cómo inicializar una matriz de clases en kotlin?

Recibo un error cuando pongo el tipo y el tamaño de una matriz de clases

Yo he tratado:

 fun main(args :Array<String>) { class modul() { var nommodul: String? = null var coeff: Int? = null var note: Int? = null } var releve class notes() { var releve: array<modul>(10){""} here the erreur } }
over 4 years ago · Santiago Trujillo
2 Respostas
Responde à pergunta

0

En primer lugar, su código tiene varios errores. Esto podría ser un problema de MCVE y/o de copiar y pegar, pero necesito abordarlos antes de comenzar con los arreglos.

var releve antes de que la clase de notes no esté permitida. No lo asigna, no declara un tipo, y el compilador se quejará si copia y pega el código de su pregunta.

En segundo lugar, la matriz var en sí misma: la Array está en mayúsculas y la inicialización está separada. Esto sería más válido ( tenga en cuenta que esto todavía no funciona ; la solución para eso viene más adelante en esta respuesta):

 var releve: Array<modul> = Array(10) {...} // or var releve = Array<modul>(10) {...}

Y lo último antes de comenzar con la matriz en sí: lea las convenciones del lenguaje , especialmente las de nomenclatura. Todas sus clases deben comenzar con una letra mayúscula.


Los arreglos de Kotlin son bastante diferentes de los arreglos de Java en muchos aspectos, pero el más notable es que la inicialización directa del arreglo también requiere un inicializador.

Se espera que los corchetes creen una nueva instancia, lo cual no es así. Creas un String, que no es, en tu caso, un modul .

Hay varias formas de arreglar esto dependiendo de cómo quieras hacerlo.

Si tiene instancias que desea agregar a la matriz, puede usar arrayOf :

 arrayOf(modulInstance, modulInstance2, ...)

Si desea crearlos directamente, puede usar su enfoque:

 var releve = Array(10) { modul() }

Una nota sobre ambos: debido a la inicialización, obtiene una inferencia de tipo automática y no necesita declarar explícitamente <modul>


Si desea matrices de estilo Java, necesita una matriz de valores nulos.

Hay dos maneras de hacer esto:

 var releve = arrayOfNulls<modul>(10) // or var releve = Array<modul?>(10) { null }

Recomiendo encarecidamente el primero, porque es más limpio. Sin embargo, no estoy seguro de si hay una diferencia en cuanto al rendimiento.

Tenga en cuenta que esto infiere un tipo anulable para la matriz, pero le permite trabajar con matrices de forma similar a Java. La inicialización desde este punto es como Java: releve[i] = modul() . Este enfoque es principalmente útil si tiene argumentos que desea agregar a cada una de las clases y necesita hacerlo manualmente. El uso de inicializadores manuales también le proporciona un índice ( consulte la documentación ) que puede usar durante la inicialización.

Tenga en cuenta que si está usando un ciclo for para inicializar, también puede usar Array(10) { YourClass() } y usar el índice proporcionado si necesita información sensible al índice, como argumentos de función. Por supuesto, no hay nada de malo en usar un bucle for, pero puede ser más limpio.


Otras lecturas

  • Array
  • lambdas
over 4 years ago · Santiago Trujillo Relatório

0

aquí un ejemplo de inicialización de matriz kotlin:

matriz de método de biblioteca

 val strings = arrayOf("January", "February", "March")

matrices primitivas

 val numbers: IntArray = intArrayOf(10, 20, 30, 40, 50)

Inicialización tardía con índices

 val array = arrayOfNulls<Number>(5) for (i in array.indices) { array[i] = i * i }

Ver Kotlin - Tipos básicos para más detalles

over 4 years ago · Santiago Trujillo Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda