Aún no tienes acceso a esta clase

Crea una cuenta y continúa viendo este curso

Switch con casos compuestos

28/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.

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…

//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.*/