arrays - Swift 3 2d array de Int
swift3 (2)
No es simple en realidad. La línea:
var arr : [[Int]] = []
Crea una variable de tipo
Array of Array of Int
e inicialmente la matriz está vacía.
Debe completar esto como cualquier otra matriz en Swift.
Retrocedamos a una sola matriz:
var row : [Int] = []
Ahora tiene una matriz vacía. No puedes simplemente hacer:
row[6] = 10
Primero debe agregar 7 valores a la matriz antes de poder acceder al valor en el índice
6
(el séptimo valor).
Con su matriz de matrices, debe completar la matriz externa con un conjunto completo de matrices internas. Y cada una de esas matrices internas debe completarse con el número adecuado de valores.
Aquí hay una manera simple de inicializar su matriz de matrices suponiendo que desea una matriz precargada con cada valor establecido en 0.
var matrix : [[Int]] = Array(repeating: Array(repeating: 0, count: 10), count: 10)
El recuento externo representa el número de filas y el recuento interno representa el número de columnas. Ajuste cada uno según sea necesario.
Ahora puede acceder a cualquier celda de la matriz:
matrix[x][y] = 1 // where x and y are from 0 to rows-1/columns-1
En realidad es una pregunta muy simple, pero después de una hora no puedo resolver mi problema.
Necesito crear una matriz 2D de Int.
var arr = [[Int]]()
or
var arr : [[Int]] = []
trató de cambiar el valor:
arr[x][y] = 1
error fatal: índice fuera de rango
¿Debo usar APPEND o necesito especificar el tamaño de la matriz?
Estoy confundido..
No solo necesita inicializar la matriz y las submatrices antes de poder asignar ningún valor, sino que también la longitud de cada matriz debe ser mayor que la posición del índice que está intentando establecer.
Esto se debe a que Swift no inicializa las submatrices por usted, ni incrementa la longitud de la matriz cuando se asigna a un índice.
Por ejemplo, el siguiente código fallará:
var a = [Int]()
a[0] = 1
// fatal error: Index out of range
En su lugar, puede inicializar una matriz con la cantidad de elementos que desea contener, llenándola con un valor predeterminado, cero, por ejemplo:
var a = Array(repeating: 0, count: 100)
a[0] = 1
// a == [1, 0, 0, 0...]
Para crear una matriz de 100 por 100 inicializada a 0 valores:
var a = Array(repeating: Array(repeating: 0, count: 100), count: 100)
a[0][0] = 1
Si no desea especificar un tamaño inicial para su matriz, puede hacerlo de esta manera:
var a = [[Int]]()
a.append([])
a[0].append(1)