Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

572
Vistas
¿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 Respuestas
Responde la pregunta

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 Denunciar

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 Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda