Categories
Swift Development

100 Dias de Swift Día 2

Día 2

Estas son mis notas del curso del curso hackingwithswift

Entrada Anterior

“when the going gets tough, everyone leaves.”

Lynch’s Law

«Cuando las cosas se ponen difíciles, todos se van.»

Lynch’s Law 

Arrays

Matrizes

Los Arrays son una colección de valores que se guardan como si fueran uno.

Por ejemplo la Liga de la Justicia

let batman = "Bruno Días"
let superMan = "Clark Ken"
let wonderWoman = " Diana Prince"

let ligaDeLaJusticia = [batman, superMan, wonderWoman]

Un Array inicia y termina con corchetes « [ ]» , los elementos deben estar separados por comas, y para poder leer los elementos dentro del Array usamos el numero de elemento, comenzando la cuenta desde el cero, por ejemplo para acceder al primer elemento seria así

//Acceder a batman
ligaDeLaJusticia[0]

Si tratas de un leer un valor que no existe en el array por ejemplo ligaDeLaJusticia[3] Swift fallara

Si estas usando type annotations se especifican dentro de los corchetes por ejemplo

let númerosEnteros = [Int]
let númerosDecimales = [Double]
let nombres = [String]

Sets

Colecciones

Los Sets son colecciones de de valores igual que los Arrays. pero con dos diferencias, 1) los elementos no se guardan en ningún orden y 2) ningún elemento se puede repetir

Puedes crear un Set a partír de un Array así:

let colores = Set(["rojo","Azul", "Amarillo"])

Estos valores no se guardan en nigua orden y no puedes acceder a ellos como en un Array, y si tratas de agregar un valor duplicado este se ignorara

Tuples

Tuplas

Las Tuplas permiten guardar varios valores en forma de uno solo, son diferentes de los array en tres cosas 1) no puedes añadir o remover elementos, 2) no puedes cambiar el tipo de dato de los elementos dentro de ella, 3) puedes acceder a los elementos en su interior usando su posición numérica o el nombre, pero swift no te dejara leer números o nombres que no existen.

Ejemplo

var name = (first: "Taylor", last: "Swift")

Luego acceder a los valores por nombre o numero

//accedemos al mismo valor de dos formas diferentes 
name.0
name.first

finalmente recuerda que puedes cambiar los valores dentro pero no su tipo de dato.

Arrays vs Sets vs Tuples

Si bien estos valores podrían parecer iguales tienen distintos usos

Para una colección de valores fijos donde cada elemento tiene una posición o valor único, usamos una Tupla («Tuple»)

Para un colección de valores que debe ser único o donde necesitas revisar rápido que el valor exista, usa un Colección («Set»)

y si necesitas una colección de valores que contenga valors duplicados y el orden importa debería usar una Matriz («Array»)

//Spoiler la mayoría de las veces sera un Array

Dictionaries

Los diccionarios son colecciones de datos igual que las matrices, pero a diferencia de las matrices en lugar de acceder a ellas por medio de su posición numérica, puedes acceder a ellas usando lo que quieras

Por ejemplo podemos usar un String para acceder a las profesiones de un grupo de amigos

var ocupaciones = [ 
    "Misael" : "Programador", 
    "Armando": "Sistemas", 
] 
 
ocupaciones["Armando"] = "Soporte Tecnico" 
 
print(ocupaciones["Armando"]) 

Cuando usamos type anotations podemos declarar el tipo usando dos puntos para separar, por ejemplo:

var diccionarioVacio = [String:Float]() 

Dictionary default values

Valores por defecto para diccionarios

Si tratamos de acceder a un valor que no existe Swift nos regresara un valor «nil» o nulo; nada en absoluto

Pero podemos usar un valor por defecto o «default»

var ocupaciones = [ 
    "Misael" : "Programador", 
    "Armando": "Sistemas", 
] 
  
//esta devuelve nil 
print(ocupaciones["Luis"]) 

//esta devuelve un valor por default

print(ocupaciones["Luis"], default: "Desconocido") 

Creando Colecciones vacías

Para crear una matriz vacía o un diccionario, usamos la sintaxis de iniciación  

let arregloVacio = [String]() 
 
let diccionarioVacio = [String:Float]() 

Si el tipo de información puede ser inferida, se puede escribir de manera simplificada 

var arregloVacio = [String]() 
 
var diccionarioVacio = [String:Float]() 
 
    arregloVacio = [] 
 
    diccionarioVacio = [:] 

Esto es útil cuando queremos cambiar el valor o pasar un valor a una función.  

Enums 

Numeraciones

Sirven para agrupar valores relacionados de forma que son mas fáciles de usar por ejemplo

En lugar de tener :

let resultado = "Fallo"
let resultado2 = "Falla"
let resultado3 = "Fallido"

Esto genera diferentes valores que podrían tener diferentes significados así que los Enums nos ayudan a tener todo mas organizado por ejemplo

enum Resultado {
    case éxito
    case error
}

let resultado = Resultado.error

Con eso evitamos usar diferentes tipos cada vez y nuestro código gana coherencia por lo que es mas fácil de leer y mantener

Valores Asociados a los Enums

Ademas de simplemente guardar valores los Enums pueden tener valores asociados por ejemplo si tenemos un Enum con varias actividades

enum Actividades {
    case aburrido
    case corriendo
    case conversando
    case cantando 
}

Imaginemos ahora que queremos especificar de que estamos hablando

enum Actividades {
    case aburrido
    case corriendo(destino: String)
    case conversando(tema: String)
    case cantando(volumen: Int)
}

let hablando = Actividades.hablando(tema: "Star Wars")

Resumen

«Arrays» ,«Sets» , «Tuples», y «Dictionaries» te permiten guardar grupos de elementos bajo un solo valor, de formas diferentes.

Los Arrays guardan valores en el orden que tu dispongas, se pueden repetir y acceder a ellos por su posición numérica

Los Sets guarda elementos sin ningún orden y no puedes acceder a ellos por su posición numérica

Las Tuples tienen un tamaño fijo, puedes añadir nombres a cada elemento, puedes leer elementos usando posiciones numéricas o los nombres.

Los Dictionaries guardan elementos de acuerdo a sus llaves y puedes leerlos de nuevo usando sus llaves

Los Enums son una forma de agrupar valores relacionados para que no te equivoques al escribirlos, por ejemplo para tipos de errores, adicionalmente puedes relacionarlos con otros valores.

//y bien ese fue el día 2, la verdad casi siempre se usan Arrays y Dictionaries es muy raro que se usen otros a excepción de los Enums que son muy utiles para hacer tu codigo mas legible

Referencias

Todas estas notas están basadas en el curso de hackingwithswift el cual te recomiendo tomar directo en su sitio web

Aqui los enlaces

https://www.hackingwithswift.com/100

https://www.hackingwithswift.com/100/2

Proximo Día

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *