Swift - Matrices

Las matrices Swift 4 se utilizan para almacenar listas ordenadas de valores del mismo tipo. Swift 4 pone un control estricto que no le permite ingresar un tipo incorrecto en una matriz, incluso por error.

Si asigna una matriz creada a una variable, siempre es mutable, lo que significa que puede cambiarla agregando, quitando o cambiando sus elementos; pero si asigna una matriz a una constante, esa matriz es inmutable y su tamaño y contenido no se pueden cambiar.

Crear matrices

Puede crear una matriz vacía de un cierto tipo utilizando la siguiente sintaxis de inicializador:

var someArray = [SomeType]()

Aquí está la sintaxis para crear una matriz de un tamaño dado a * e inicializarla con un valor:

var someArray = [SomeType](count: NumbeOfElements, repeatedValue: InitialValue)

Puede utilizar la siguiente declaración para crear una matriz vacía de Int tipo que tiene 3 elementos y el valor inicial como cero -

var someInts = [Int](count: 3, repeatedValue: 0)

A continuación se muestra un ejemplo más para crear una matriz de tres elementos y asignar tres valores a esa matriz:

var someInts:[Int] = [10, 20, 30]

Acceso a matrices

Puede recuperar un valor de una matriz utilizando subscript sintaxis, pasando el índice del valor que desea recuperar entre corchetes inmediatamente después del nombre de la matriz de la siguiente manera:

var someVar = someArray[index]

Aquí el indexcomienza desde 0, lo que significa que se puede acceder al primer elemento usando el índice como 0, se puede acceder al segundo elemento usando el índice como 1 y así sucesivamente. El siguiente ejemplo muestra cómo crear, inicializar y acceder a matrices:

var someInts = [Int](count: 3, repeatedValue: 10)

var someVar = someInts[0]
print( "Value of first element is \(someVar)" )
print( "Value of second element is \(someInts[1])" )
print( "Value of third element is \(someInts[2])" )

Cuando se compila y ejecuta el código anterior, produce el siguiente resultado:

Value of first element is 10
Value of second element is 10
Value of third element is 10

Modificar matrices

Puedes usar append()método u operador de asignación de adición (+ =) para agregar un nuevo elemento al final de una matriz. Eche un vistazo al siguiente ejemplo. Aquí, inicialmente, creamos una matriz vacía y luego agregamos nuevos elementos a la misma matriz:

var someInts = [Int]()

someInts.append(20)
someInts.append(30)
someInts += [40]

var someVar = someInts[0]

print( "Value of first element is \(someVar)" )
print( "Value of second element is \(someInts[1])" )
print( "Value of third element is \(someInts[2])" )

Cuando se compila y ejecuta el código anterior, produce el siguiente resultado:

Value of first element is 20
Value of second element is 30
Value of third element is 40

Puede modificar un elemento existente de una matriz asignando un nuevo valor a un índice determinado como se muestra en el siguiente ejemplo:

var someInts = [Int]()

someInts.append(20)
someInts.append(30)
someInts += [40]

// Modify last element
someInts[2] = 50

var someVar = someInts[0]

print( "Value of first element is \(someVar)" )
print( "Value of second element is \(someInts[1])" )
print( "Value of third element is \(someInts[2])" )

Cuando se compila y ejecuta el código anterior, produce el siguiente resultado:

Value of first element is 20
Value of second element is 30
Value of third element is 50

Iterando sobre una matriz

Puedes usar for-in bucle para iterar sobre el conjunto completo de valores en una matriz como se muestra en el siguiente ejemplo:

var someStrs = [String]()

someStrs.append("Apple")
someStrs.append("Amazon")
someStrs += ["Google"]
for item in someStrs {
   print(item)
}

Cuando se compila y ejecuta el código anterior, produce el siguiente resultado:

Apple
Amazon
Google

Puedes usar enumerate() función que devuelve el índice de un elemento junto con su valor, como se muestra a continuación en el siguiente ejemplo:

var someStrs = [String]()

someStrs.append("Apple")
someStrs.append("Amazon")
someStrs += ["Google"]

for (index, item) in someStrs.enumerated() {
   print("Value at index = \(index) is \(item)")
}

Cuando se compila y ejecuta el código anterior, produce el siguiente resultado:

Value at index = 0 is Apple
Value at index = 1 is Amazon
Value at index = 2 is Google

Agregar dos matrices

Puede usar el operador de suma (+) para agregar dos matrices del mismo tipo que producirán una nueva matriz con una combinación de valores de las dos matrices de la siguiente manera:

var intsA = [Int](count:2, repeatedValue: 2)
var intsB = [Int](count:3, repeatedValue: 1)

var intsC = intsA + intsB
for item in intsC {
   print(item)
}

Cuando se compila y ejecuta el código anterior, produce el siguiente resultado:

2
2
1
1
1

La propiedad del recuento

Puede utilizar el modo de solo lectura count propiedad de una matriz para averiguar la cantidad de elementos en una matriz que se muestra a continuación:

var intsA = [Int](count:2, repeatedValue: 2)
var intsB = [Int](count:3, repeatedValue: 1)

var intsC = intsA + intsB

print("Total items in intsA = \(intsA.count)")
print("Total items in intsB = \(intsB.count)")
print("Total items in intsC = \(intsC.count)")

Cuando se compila y ejecuta el código anterior, produce el siguiente resultado:

Total items in intsA = 2
Total items in intsB = 3
Total items in intsC = 5

La propiedad vacía

Puede utilizar el modo de solo lectura empty propiedad de una matriz para averiguar si una matriz está vacía o no, como se muestra a continuación:

var intsA = [Int](count:2, repeatedValue: 2)
var intsB = [Int](count:3, repeatedValue: 1)
var intsC = [Int]()

print("intsA.isEmpty = \(intsA.isEmpty)")
print("intsB.isEmpty = \(intsB.isEmpty)")
print("intsC.isEmpty = \(intsC.isEmpty)")

Cuando se compila y ejecuta el código anterior, produce el siguiente resultado:

intsA.isEmpty = false
intsB.isEmpty = false
intsC.isEmpty = true