A煤n no tienes acceso a esta clase

Crea una cuenta y contin煤a viendo este curso

Uso de return y guard

31/33
Recursos

Aportes 6

Preguntas 0

Ordenar por:

驴Quieres ver m谩s aportes, preguntas y respuestas de la comunidad? Crea una cuenta o inicia sesi贸n.

Resumen

El guard se utiliza dentro de una funci贸n para realizar un unwrapping de los opcionales. Si encuentra nil dentro, finalizar谩 la funci贸n, bucle o cualquier condici贸n usada.

<h3>C贸mo se utiliza</h3>
guard let surname = person["surname"] else {
    return
}

El uso del guard let se lee de la siguiente manera:

Si alguien puede crear (let) la variable 鈥漵urname鈥 a partir de person[鈥渟urname鈥漖, guard transfiere el control despu茅s de las llaves 鈥渰}鈥 (fuera de su scope).

Caso contrario, se finaliza con return.

Ejemplo:

var people = ["name": "Juan Gabriel", "age": 31, "isMale": true] as [String : Any]

func testUserValidation(person:[String:Any]) {
    guard let surname = person["surname"] else {
        /*
         En este punto no se pudo crear la constante `surname` porque la key 鈥渟urname鈥 no existe en el diccionario `people`.
         */
        print("El apellido es desconocido")
        return
    }
    // Aqui existe surname
    print(surname)
    
    guard let age = person["age"] else {
        print("La edad es desconocida")
        return
    }
    print("La edad de la persona es \(age)")
}

testUserValidation(person: people)

El resultado de esta funci贸n es:

El apellido es desconocido

Porque entra en el else del primer guard, imprime el mensaje y corta la ejecuci贸n de la funci贸n con el return.

Si agregamos la siguiente linea justo antes de la llamada a la funci贸n:

people["surname"] = "Gomila"
testUserValidation(person: people)

la salida en consola es:

Gomila
La edad de la persona es 31

Guard:
Si existe tal cosa, ejecuta la siguiente iteraci贸n de la funci贸n. Si no, cae en bloque de c贸digos del else

鈥淪i existe tal cosa; haz esto. Si no, haz esto鈥︹

Return:
Devolver un valor de una funci贸n y lo finalic茅鈥

No se preocupen por no entenderlo del todo el return, se ver谩 m谩s a fondo en el curso Swift Funciones

me fue complejo entender este tema ( Return y Guard )
馃槮

Creo que es muy rebuscado la existencia del guard, un simple if let hace lo mismo, y es mas facil de implementar y leer.

var people = ["name" : "Andres", "age" : 23, "surname": "Antonio"] as [String : Any];

func getSurnameIfExists(plp: [String : Any]) -> Any{
    guard let surname = plp["surname"] else{
        return "";
    }
    return surname;
}

var result = getSurnameIfExists(plp: people);
print(result);

Me gust贸 mucho esta clase, justamente cuando vimos el if let鈥 me preguntaba 鈥渉abra alguna manera de usar el valor fuera de los corchetes del if?鈥

Otra forma de declarar seria asi:

var people : [String : Any] = ["Name" : "Alberto Moreno", "age" : 23, "isMale" : true]