No tienes acceso a esta clase

¡Continúa aprendiendo! Únete y comienza a potenciar tu carrera

Switch con casos compuestos

28/33
Recursos

Aportes 10

Preguntas 0

Ordenar por:

¿Quieres ver más aportes, preguntas y respuestas de la comunidad?

o inicia sesión.

Este switch evaluations las condiciones de entrega de un pedido para determinar si se entrego a tiempo y cercano al lugar del punto GPS registrado.

let deliveryState: (String, String, Int) = (Estado: "Entregado", Horario: "A tiempo", Distancia: 49 )
let status: String

// Reto
switch deliveryState {
case ("Entregado", "A tiempo", 0..<50):
    status = "El pedido a sido entregado a tiempo y cerca al punto GPS registrado"
case ("Entregado", "Retrasado", 0..<50):
    status = "El pedido a sido entregado con retraso y cerca al punto GPS registrado"
case ("Pendiente",_, _):
    status = "El pedido todavia no a sido entregado"
case ("Entregado", "A tiempo", 50...100):
    status = "El pedido a sido entregado a tiempo, lejano al punto GPS registrado"
case ("Entregado", "Retrasado", 50...100):
    status = "El pedido a sido entregado con retraso, lejano al punto GPS registrado"
default:
    status = "Por favor ponerse en contacto con nuestros operadores"
}

print(status)


Indirectamente el profesor durante todo el curso nos ha entrenado para nombrar variables 👨🏼‍💻

un switch evaluando una tupla donde el primer elemento es la calificacion del alumno, y el segundo es si el alumno pago la colegiatura

let studentStatus: (UInt8,Bool) = (100,true)

switch studentStatus {
case (0..<70, _):
    print("alumno reprobado")
case (_, false):
    print("alumno dado de baja por falta de pago")
case (70..<80, true):
    print("alumno con matricula pagada y calificacion aprobatoria: \(studentStatus.0) con descuento de 10% por calificacion")
case (80..<90, true):
    print("alumno con matricula pagada y calificacion aprobatoria: \(studentStatus.0) con descuento de 20% por calificacion")
case (90..<100, true):
    print("alumno con matricula pagada y calificacion aprobatoria: \(studentStatus.0) con descuento de 30% por calificacion")
case (100, true):
    print("alumno con matricula pagada y calificacion aprobatoria: \(studentStatus.0) con descuento de 40% por calificacion y mención honorifica")
default:
    print("Error al capturar la calificacion")
}

Si estuviera haciendo una aplicación y necesitara saber el estado en que se encuentra una solicitud de seguimiento, activa, pendiente o rechazada, como en el caso de instagram. Cada case seria un estado de la solicitud.

Un ejemplo tonto que se me acaba de ocurrir para un uso al Switch, puede servir para saber si tu comida ya esta lista para ser recogida, si cuentas con dinero suficiente para transferir a otra persona, si cuentas tu factura del teléfono activa o no, si tienes la edad suficiente para registrarte o usar un servicio, etc…

Ejemplo:
Un caso que se me ocurre para utilizar el switch, es un una alarma moderna, por ejemplo en caso que se active X sensor, capturar imagen con cámara Z
En caso que se active Y sensor, disparar sirena…

YO LO PENSARIA PARA CONFIRMAR ALGUNA PREGUNTA DE SEGURIDAD DE UNA APP.

este es un switch para detectar con las coordenadas en que ciudad va aterrizando un avión

let airportRunway = (4.6769842,-74.150043)


switch airportRunway {
    case (4.6769842,-74.150043):
        print("welcome to bogota")
    
    case (19.436076,-99.076393):
        print("welcome to cdmx")
    
    case(28.4820199,81.3881967):
        print("welcome to orlando")
    
    case(-33.4727092,-70.7699162):
        print("welcome to chile")
    default:
        break
}

Podemos utilizar lowercased() para tomar la opción como minuscula

let anotherCharacter: Character = "E"

switch anotherCharacter.lowercased() {
case "a", "e", "i", "o", "u":
    print("Se trata de una vocal")
case "b","c","d","f","g","h","j","k","l","m","n","ñ","p","q","r","s","t","v","w","x","y","z":
    print("Se trata de una consonante")
default:
    print("Se trata de otro caracter que no es vocal ni consonante")
}
//TODO: Switch ejemplo para proyectos futuros
let flightStatus = (departureCity: "Paris", destinationCity: "Madrid", status: "con retraso")
let message: String

switch flightStatus
{
case ("Paris", "", _):
    message = "Por favor escoja una ciudad de destino."
case("Paris", let city, ""):
    message = "No hay información del estado de vuelo a la ciudad de \(city). El aeropuerto de París le ofrece disculpas por las molestias. Intente más tarde por favor."
case ("Paris", let city, let status):
    message = "Su vuelo a la ciudad \(city) está \(status)"
case (let departureCity, _, _):
    message = "Ud. está en el aeropuerto de \(departureCity). No hay información disponible en el momento"
}

print(message)
/*OUTPUT: Su vuelo a la ciudad Madrid está con retraso.*/