Swift Arrays: ¿Cómo usarlo y por qué? (Con ejemplos)

En este tutorial, aprenderá acerca de las matrices, cómo crearlas, acceder a los valores de una matriz y algunas operaciones comunes en la matriz.

En el artículo anterior sobre tipos de datos Swift, aprendimos sobre la creación de variables / constantes de algún tipo de datos que pueden contener un solo valor.

Pero, ¿qué pasa si queremos almacenar varios valores del mismo tipo de datos? Usamos algo llamado Array en Swift.

¿Qué es una matriz?

Una matriz es simplemente un contenedor que puede contener múltiples datos (valores) de un tipo de datos en una lista ordenada, es decir, obtiene los elementos en el mismo orden en que definió los elementos de la matriz.

Una matriz puede almacenar valores de cualquier tipo de datos Int, por ejemplo String, clase, etc.

¿Cómo declarar una matriz en Swift?

Puede crear una matriz vacía especificando el tipo de datos entre corchetes ().

Recuerde, debe incluir el tipo entre corchetes; de lo contrario, Swift lo tratará como un tipo de datos normal y solo podrá almacenar un valor en él.

Ejemplo 1: declarar una matriz vacía

 let emptyIntArr:(Int) = () print(emptyIntArr) 

Cuando ejecute el programa, la salida será:

 ()

En el programa anterior, hemos declarado una constante emptyIntArr que puede almacenar una matriz de enteros e inicializada con valores 0.

O

También puede definir una matriz vacía como se muestra a continuación:

 let emptyIntArr:Array = Array() print(emptyIntArr) 

O

Dado que swift es un lenguaje de inferencia de tipos, también puede crear una matriz directamente sin especificar el tipo de datos, pero debe inicializar con algunos valores para que el compilador pueda inferir su tipo como:

Ejemplo 2: declarar una matriz con algunos valores

 let someIntArr = (1, 2, 3, 4, 5, 6, 7, 8, 9) print(someIntArr) 

Cuando ejecute el programa, la salida será:

 (1, 2, 3, 4, 5, 6, 7, 8, 9)

En el programa anterior, hemos declarado una constante someIntArr que puede almacenar una matriz de Integer sin especificar el tipo explícitamente. Además, hemos inicializado una matriz con 1, 2, 3, 4, 5, 6, 7, 8, 9 valores.

Ejemplo 3: declaración de una matriz que contiene el número especificado de un único valor repetido

También puede repetir un valor un número determinado de veces para formar una matriz en Swift. Esto se hace usando el inicializador de matriz con repetición y recuento.

 let arrWithRepeatingValues = Array(repeating: "Hello, World", count: 4) print(arrWithRepeatingValues) 

Cuando ejecute el programa, la salida será:

 ("Hola, mundo", "Hola, mundo", "Hola, mundo", "Hola, mundo")

En el programa anterior, hemos definido un arrWithRepeatingValues ​​constante que almacena una matriz de cadena Hello, World y repite el mismo valor 4 veces como se especifica en el recuento.

Nota: En Swift, no puede crear una matriz de tamaño de longitud fija como lo hace en otros lenguajes de programación. La matriz de tamaño de longitud fija significa que la matriz no puede tener más elementos de los que define durante la inicialización.

¿Cómo se almacenan los valores en una matriz?

Suponga que tiene una constante que puede almacenar una matriz de cadenas de la siguiente manera:

 sea ​​intArr = (21, 34, 54, 12)

La representación gráfica de cómo se almacenan los valores en una matriz se puede mostrar a continuación:

Todas las matrices que crea comienzan con el índice 0. El primer elemento se almacena en el índice 0, el segundo elemento en el siguiente índice (1) y así sucesivamente.

¿Cómo acceder a los elementos de la matriz en Swift?

Puede acceder a los elementos de una matriz utilizando la sintaxis de subíndice, es decir, debe incluir el índice del valor al que desea acceder entre corchetes inmediatamente después del nombre de la matriz.

Suponga que declaró una matriz intArr como arriba. El primer elemento es intArr (0), el segundo elemento es intArr (1) y así sucesivamente.

Ejemplo 4: acceder a elementos de una matriz

 let intArr = (21, 34, 54, 12) print(intArr(0)) print(intArr(1)) print(intArr(2)) print(intArr(3)) 

Cuando ejecute el programa, la salida será:

 21 34 54 12 

También puede acceder a elementos de una matriz mediante bucles for-in. Consulte el bucle Swift For-in para obtener más información al respecto.

¿Cómo modificar / agregar elementos de matriz en Swift?

Puede modificar elementos de una matriz utilizando la sintaxis de subíndice y el operador de asignación, es decir, debe incluir el índice del valor que desea actualizar entre corchetes después del nombre de la matriz seguido del operador de asignación y el nuevo valor.

Ejemplo 5: modificar elementos de una matriz

 var intArr = (21, 34, 54, 12) intArr(0) = 12 intArr(1) = 42 intArr(2) = 45 intArr(3) = 21 print(intArr) 

Cuando ejecute el programa, la salida será:

 (12, 42, 45, 21)

También puede modificar todos los elementos de la matriz con nuevos valores como se muestra a continuación:

Ejemplo 6: modificar una matriz como un todo

 var intArr = (21, 34, 54, 12) intArr = (1,2,3) print(intArr) 

Cuando ejecute el programa, la salida será:

 (1, 2, 3)

Sin embargo, para agregar un nuevo elemento a una matriz existente, no puede usar la sintaxis de subíndice. Si lo hace, terminará con un error. No puedes hacer algo como esto:

Ejemplo 7: agregar un nuevo elemento en una matriz usando sintaxis de subíndice (no funciona)

 var intArr = (21, 34, 54, 12) intArr(4) = 10 

Cuando ejecute el programa, la salida será:

 error fatal: índice fuera de rango

El programa anterior da un error al asignar un nuevo elemento a una matriz intArr. Esto se debe a que intArr no ha asignado memoria adicional para el índice 4 y no puede almacenar el valor dado.

Para insertar correctamente un nuevo elemento en una matriz, usamos el append()método de la matriz . append()se describe en la siguiente sección.

Algunas funciones y propiedades útiles integradas de Array

1. está vacío

Esta propiedad determina si una matriz está vacía o no. Devuelve truesi una matriz no contiene ningún valor; de lo contrario, devuelve false.

Ejemplo 8: ¿Cómo funciona isEmpty?

 let intArr = (21, 34, 54, 12) print(intArr.isEmpty) 

Cuando ejecute el programa, la salida será:

 falso

2. primero

Esta propiedad se utiliza para acceder al primer elemento de una matriz.

Ejemplo 9: ¿Cómo funciona primero?

 let intArr = (21, 34, 54, 12) print(intArr.first) 

Cuando ejecute el programa, la salida será:

 Opcional (21)

De manera similar, puede usar la lastpropiedad para acceder al último elemento de una matriz.

3. añadir

La función de agregar se usa para insertar / agregar elementos al final de la matriz.

Ejemplo 10: ¿Cómo funciona append?

 var intArr = (21, 34, 54, 12) intArr.append(32) print(intArr) 

Cuando ejecute el programa, la salida será:

 (21, 34, 54, 12, 32)

También puede agregar el contenido de una matriz a otra matriz como:

 var firstArr = (1,2,3,4) var secondArr = (5,6,7,8) firstArr.append(contentsOf: secondArr) print(firstArr) 

Cuando ejecute el programa, la salida será:

 (1, 2, 3, 4, 5, 6, 7, 8)

4. insertar

Esta función se usa para insertar / agregar elementos en un índice específico de la matriz.

Ejemplo 11: ¿Cómo funciona el inserto?

 var intArr = (21,34,54,12) intArr.insert(22, at: 1) print(intArr) 

Cuando ejecute el programa, la salida será:

 (21, 22, 34, 54, 12)

De manera similar, también puede usar la removepropiedad para eliminar el elemento en el índice especificado.

5. quitar

Esta función elimina y devuelve el valor especificado en la posición especificada de la matriz.

Ejemplo 12: ¿Cómo funciona eliminar?

 var strArr = ("ab","bc","cd","de") let removedVal = strArr.remove(at: 1) print("removed value is (removedVal)") print(strArr) 

Cuando ejecute el programa, la salida será:

 el valor eliminado es bc ("ab", "cd", "de") 

De manera similar, también puede usar funciones como removeFirsteliminar el primer elemento de una matriz, removeLasteliminar el último elemento de una matriz y removeAllvaciar una matriz.

6. invertido

Esta función devuelve los elementos de la matriz en orden inverso.

Ejemplo 13: ¿Cómo funciona inverted ()?

 var intArr = (21,22,23,24) let reversedArr = Array(intArr.reversed()) print(reversedArr) 

Cuando ejecute el programa, la salida será:

 (24, 23, 22, 21)

7. contar

Esta propiedad devuelve el número total de elementos de una matriz.

Ejemplo 14: contar

 let floatArr = (10.2,21.3,32.0,41.3) print(floatArr.count) 

Cuando ejecute el programa, la salida será:

 4

Cosas para recordar

Mientras usa la sintaxis de subíndice para acceder a elementos de una matriz en Swift, debe asegurarse de que el valor se encuentre en el índice, de lo contrario, se producirá un bloqueo en el tiempo de ejecución. Veamos esto en un ejemplo:

 let intArr = (21, 34, 54, 12) print(intArr(-1)) 

Cuando ejecute el programa, la salida será:

 error fatal: índice fuera de rango

En el programa anterior, no hay ningún valor en el índice -1 . Entonces, cuando intente acceder al valor en el índice, obtendrá un bloqueo de tiempo de ejecución.

Para evitar esto, primero busque el índice del elemento que está intentando eliminar. Y luego elimine el elemento en el índice como se muestra a continuación:

 var intArr = (21, 34, 54, 12) if let index = intArr.index(of: 34) ( print("found index") let val = intArr.remove(at: index) print(val) ) 

Cuando ejecute el programa, la salida será:

 encontrado índice 34 

Articulos interesantes...