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.

Aprende lo fundamental de Swift - Tipos Basicos

Una constante es un valor que se mantiene igual después de que se declaró la primera vez, mientras que una variable es un valor que puede cambiar. Una constante se conoce como inmutable, lo que significa que no se puede cambiar, y una variable es mutable. Si usted sabe que no tendrá que ser cambiado en su código de un valor, lo declare como una constante en lugar de una variable.

Utilice let para hacer una constante y var para hacer una variable.

var myVariable = 42
myVariable = 50
let myConstant = 42

Todas las variables y constantes en Swift tiene un tipo, pero no siempre tiene que escribir el tipo de forma explícita. Proporcionar un valor al crear una constante o variable permite que el compilador inferir su tipo. En el ejemplo anterior, el compilador infiere que myVariable es un número entero, ya que su valor inicial es un número entero. Esto se conoce como la inferencia de tipos. Una vez que una constante o variable tiene un tipo, ese tipo no puede ser cambiado.

Si el valor inicial no proporciona suficiente información (o si no hay valor inicial), especifique el tipo escribiéndolo después de la variable, separados por dos puntos.

let implicitIntero = 70
let implicitDoble = 70.0
let explicitDoble: Double = 70

Los valores no se convierten implícitamente a otro tipo. Si usted necesita para convertir un valor de un tipo diferente, de forma explícita que una instancia del tipo deseado. A continuación, convertir un int en una cadena.

let etiqueta = "El ancho es "
let ancho = 94
let anchoEtiqueta = etiqueta + String(etiqueta)

Hay una manera aún más sencilla para incluir valores en cadenas: Escribir el valor entre paréntesis, y escribir una barra invertida (\) antes del paréntesis. Esto se conoce como interpolación cadena.

let manzanas = 3
let naranjas = 5
let cantidadManzanas = "Tengo \(manzanas) manzanas."
let cantidadFrutas = "Tengo \(manzanas + naranjas) piezas de frutas."

Utilice opcionales para trabajar con valores que pudieran faltar. Un valor opcional o bien contiene un valor nulo o contiene (sin valor) para indicar que se pierde un valor. Escribe un signo de interrogación (?) Después de que el tipo de un valor para marcar el valor como opcional.

let opcionalInt: Int? = 9

Para obtener el valor subyacente de un opcional, desenvolverlo. Usted aprenderá desenvolver opcionales más tarde, pero la forma más sencilla de hacerlo consiste en vigor el operador unwrap (!). Sólo utilice el operador unwrap si está seguro del valor subyacente no es nil.

let actInt: Int = opcionalInt!

Opcionales son omnipresentes en Swift, y son muy útiles para muchas situaciones en las que un valor puede o no estar presente. Son especialmente útiles para conversiones de tipos de intentos.

var miCadena = "7"
var posibleInt = Int (miCadena)
print(posibleInt)

En este código, el valor de possibleInt es 7, porque miCadena contiene el valor de un número entero. Pero si cambia mystring que ser algo que no se puede convertir en un entero, possibleInt se convierte en nulo.

miCadena = "banana"
posibleInt = Int (miCadena)
print (posibleInt)

Una matriz es un tipo de datos que realiza un seguimiento de un conjunto ordenado de elementos. Crear matrices utilizando corchetes ([]), y acceder a sus elementos escribiendo el índice entre paréntesis. Las matrices comienzan en el índice 0.

var ratList = [ "pobre", "Fina", "bueno", "excelente"]
ratList [1] = "OK"
ratList

Para crear una matriz vacía, utilice la sintaxis de inicialización. Vas a aprender más acerca de inicializadores dentro de un rato.

// Crea una matriz vacía.
let vacioArray = [String] ()

Se dará cuenta de que el código de seguridad tiene un comentario. Un comentario es un trozo de texto en un archivo de código fuente que no consigue compilado como parte del programa, pero proporciona un contexto o información útil sobre cada elemento de código. Un comentario de una sola línea aparece después de dos barras (//) y aparece un comentario de varias líneas entre un conjunto de barras y asteriscos (/ * ... * /). Vas a ver y escribir los dos tipos de comentarios en todo el código fuente en las lecciones.

Un implícitamente sin envolver opcional es un opcional que también puede ser utilizado como un valor no opcional, sin la necesidad de desenvolver el valor opcional que cada vez que se accede. Esto se debe a un implícitamente sin envolver opcional se supone que tiene siempre un valor después de que el valor se establece inicialmente, aunque el valor puede cambiar. Implícitamente tipos opcionales articulo se indican con un signo de exclamación (!) En lugar de un signo de interrogación (?).

var implicitaOpcionalInt: Int!

Rara vez se necesita para crear implícitamente tiene opcionales en su propio código. Más a menudo, verá los utilizaron para realizar un seguimiento de los puntos de venta entre un código de interfaz y la fuente (que usted aprenderá acerca de una lección posterior) y en las API que verá a lo largo de las lecciones.