sábado, 24 de septiembre de 2016

Swift - Flujo de Control


Swift tiene dos tipos de estados de flujo de control. Las sentencias condicionales, como if e switch, comprobar si una condición es verdadera, es decir, si su valor se evalúa como el operador boleano true o antes de ejecutar una pieza de código. Bucles, como for-in y while, ejecutar la misma pieza de código de tiempos múltiple.

Una sentencia if comprueba si una determinada condición es verdadera, y si lo es, la instrucción if evalúa el código dentro de la instrucción. Se puede añadir una cláusula else para una sentencia if para definir el comportamiento más complejo. Una cláusula else puede utilizarse con un if juntos, o puede valerse por sí misma, en cuyo caso la cláusula else es ejecutado si ninguno de los if son declarados como resultado true.

let numero = 23
if numero <10 {
     print ( "El número es pequeño")
} Else if numero> 100 {
     print ( "El número es bastante grande")
} Else {
     print ( "El número está comprendido entre 10 y 100")
}

Las declaraciones pueden anidarse para crear un comportamiento complejo, interesante en un programa. He aquí un ejemplo de una sentencia if con una cláusula else anidada dentro de una sentencia for-in (que itera a través de cada elemento de una colección en orden, uno por uno).

let puntajesIndividuales = [75, 43, 103, 87, 12]
var puntajeEquipo = 0
for puntaje in puntajesIndividuales {
    if puntaje > 50 {
        puntajeEquipo += 3
    } else {
        puntajeEquipo += 1
    }
}
print(puntajeEquipo)

Utilice la unión opcional en una sentencia if para comprobar si un opcional contiene un valor.

var nombreOpcional: String? = "Jose Jesus"
var saludos = "Hola!"
if let nombre = nombreOpcional {
    saludos = "Hola, \(nombre)"
}

Si el valor opcional es nil, el condicional es false, y el código entre llaves se omite. De lo contrario, el valor opcional se desenvuelve y se asigna a la constante después de let, que hace que el desempaquetado valor disponible en el interior del bloque de código.

Se puede utilizar una sola sentencia if para enlazar varios valores. Una cláusula where se puede añadir a un caso de un mayor margen de la sentencia condicional. En este caso, la sentencia if se ejecuta sólo si el enlace se realiza correctamente para todos estos valores y se cumplen todas las condiciones.

var saludoOpcional: String? = "Hola"
if let saludos = saludoOpcional where hello.hasPrefix ( "H"), let nombre = {nombreOpcional
    saludos = "\ (saludos), \ (nombre)"
}

Interruptores en Swift son bastante potentes. Una sentencia switch es compatible con cualquier tipo de datos y una amplia variedad de operaciones de comparación, que no se limita a los números enteros y las pruebas para la igualdad. En este ejemplo, la declaración del switch se enciende el valor de la cadena verdura, comparar el valor de cada uno de sus casos y ejecutar el que coincide.

let verdura = "pimiento rojo"
switch verdura {
case "apio":
    let vegetableComment = "Añadir las pasas y hacer algunas."
case "pepino", "berro":
    let vegetableComment = "Ese sería un buen sándwich."
case sea x, where x.hasSuffix ( "pimienta"):
    let vegetableComment = "¿Es un picante \ (x)?"
default:
    let vegetableComment = "Todo sabe bien en la sopa."
}

Como se puede utilizar en un patron para asignar el valor que coincidía con la parte de un patrón a una constante. Al igual que en una sentencia if, una cláusula where se puede añadir a un caso para promover el alcance de la sentencia condicional. Sin embargo, a diferencia de una sentencia if, una caja de conmutación que tiene varias condiciones separadas por comas se ejecuta cuando se cumple cualquiera de las condiciones.

Después de ejecutar el código dentro de la caja del switch que hacía juego, el programa sale de la sentencia switch. Ejecución no continuar con el siguiente caso, por lo que no es necesario para romper explícitamente fuera de la instrucción switch al final del código de cada caso.

declaraciones del interruptor deben ser exhaustiva. Se requiere un caso por defecto, a menos que sea evidente por el contexto que todos los casos posibles se cumple, por ejemplo, cuando la sentencia switch es el cambio en una enumeración. Este requisito asegura que uno de los casos de conmutación siempre se ejecuta.

Puede mantener un índice en un bucle mediante el uso de un range. Utilice el operador de rango medio abierta (.. <) para hacer una serie de índices.

var primerForLoop = 0
for i in 0..<4 {
    primerForLoop += i
}
print(primerForLoop)

El operador de rango medio abierta (.. <) no incluye el número superior, por lo que este rango va de 0 a 3, para un total de cuatro iteraciones del ciclo. Utilice el operador gama cerrada (...) para hacer una gama que incluye ambos valores.

var segundoForLoop = 0
for _ in 0...4 {
    segundoForLoop += 1
}
print(segundoForLoop)

Este rango va de 0 a 4 para un total de cinco iteraciones de bucle. El guión bajo (_) representa un comodín, que se puede utilizar cuando no se necesita saber qué iteración del bucle se está ejecutando actualmente.

No hay comentarios.:

Publicar un comentario