Según la referencia , las matrices se crean de la siguiente manera:
Para los tipos primitivos de Java, existen tipos distintos IntArray, DoubleArrayetc. , que almacenan valores sin caja .
Se crean con los constructores y funciones de fábrica correspondientes:
val arrayOfZeros = IntArray(size) //equivalent in Java: new int[size]val numbersFromOne = IntArray(size) { it + 1 }
val myInts = intArrayOf(1, 1, 2, 3, 5, 8, 13, 21)
El primero es similar al de Java, simplemente crea una matriz primitiva rellena con el valor predeterminado, por ejemplo, cero para Int, falsepara Boolean.
Las matrices no primitivas están representadas por Array<T>clase, donde Tes el tipo de elementos.
Ttodavía puede ser uno de los tipos primitivos en Java ( Int, Boolean, ...), pero los valores en el interior serán en caja de forma equivalente a Java Integer, Doubley así sucesivamente.
Array<Int>(size)no se compila. Eso es porque no puede crear una matriz no anulable sin proporcionar los elementos.
Kirill Rakhman
2
@KirillRakhman, gracias por tu comentario, fue un error inadvertido. Fijo.
tecla
0
En Kotlin, crear un IntArray de tamaño N es simple. Use IntArray(n)o el tipo apropiado, como se detalla a fondo en la respuesta de la tecla de acceso rápido.
int
, pero para Objects, hay stackoverflow.com/questions/32679060/…Respuestas:
Según la referencia , las matrices se crean de la siguiente manera:
Para los tipos primitivos de Java, existen tipos distintos
IntArray
,DoubleArray
etc. , que almacenan valores sin caja .Se crean con los constructores y funciones de fábrica correspondientes:
val arrayOfZeros = IntArray(size) //equivalent in Java: new int[size] val numbersFromOne = IntArray(size) { it + 1 } val myInts = intArrayOf(1, 1, 2, 3, 5, 8, 13, 21)
El primero es similar al de Java, simplemente crea una matriz primitiva rellena con el valor predeterminado, por ejemplo, cero para
Int
,false
paraBoolean
.Las matrices no primitivas están representadas por
Array<T>
clase, dondeT
es el tipo de elementos.T
todavía puede ser uno de los tipos primitivos en Java (Int
,Boolean
, ...), pero los valores en el interior serán en caja de forma equivalente a JavaInteger
,Double
y así sucesivamente.Además,
T
puede ser anulable y no nulo comoString
yString?
.Estos se crean de manera similar:
val nulls = arrayOfNulls<String>(size) //equivalent in Java: new String[size] val strings = Array(size) { "n = $it" } val myStrings = arrayOf("foo", "bar", "baz") val boxedInts = arrayOfNulls<Int>(size) //equivalent in Java: new Integer[size] val boxedZeros = Array(size) { 0 }
fuente
Array<Int>(size)
no se compila. Eso es porque no puede crear una matriz no anulable sin proporcionar los elementos.En Kotlin, crear un IntArray de tamaño N es simple. Use
IntArray(n)
o el tipo apropiado, como se detalla a fondo en la respuesta de la tecla de acceso rápido.Al utilizar su matriz de tamaño fijo, puede usar Kotlin Destructuring
// Create fixed sized array val point = IntArray(2) // Access values directly val (x, y) = point
En este caso,
x
se tomará del índice 0,y
del índice 1, etc.fuente