Swift es un nuevo lenguaje de programacin para iOS y OS X de
desarrollo de aplicaciones. No obstante, muchas partes de Swift
estarn familiariadas desde su e!periencia en el desarrollo en " y Objective#". Swift proporciona sus propias versiones de todos los tipos " fundamental y Objective#", incluyendo $nt. para enteros% &oble y flotador para los valores de punto flotante% 'ool para valores booleanos% y de cadena para los datos te!tuales. Swift tambi(n ofrece versiones potentes de los dos tipos de recoleccin primaria, matri y &iccionario, como se describe en )ipos de coleccin. *l igual +ue ", Swift utilia variables para almacenar y hacer referencia a los valores por un nombre de identificacin. Swift tambi(n hace un amplio uso de variables cuyos valores no se pueden cambiar. ,stos son conocidos como constantes, y son mucho ms poderosos +ue las constantes en ". -as constantes se utilian a lo largo Swift para +ue el cdigo ms seguro y ms claro en la intencin cuando se trabaja con valores +ue no deben cambiar. *dems de los tipos conocidos, Swift introduce tipos avanados +ue no se encuentran en Objective#". ,stos incluyen tuplas, +ue le permiten crear y pasar alrededor de grupos de valores. -as tuplas pueden devolver m.ltiples valores desde una funcin como un valor .nico compuesto. Swift tambi(n introduce tipos opcionales, +ue se encargan de la ausencia de un valor. Opcionales dicen bien /no es un valor, y es igual a !/ o /no es un valor en absoluto./ Opcionales son similares al uso de nil con punteros en Objective#", pero funcionan para cual+uier tipo, no slo a las clases. Opcionales son ms seguros y ms e!presivos +ue los punteros nulos en Objective#" y estn en el coran de muchas de las caracter0sticas ms poderosas de Swift. Opcionales es un ejemplo del hecho de +ue Swift es un lenguaje de tipo seguro. Swift ayuda a ser claro acerca de los tipos de valores +ue el cdigo puede trabajar. Si parte de su cdigo espera una cadena, la seguridad de tipos le impide pasarlo un $nt por error. ,sto le permite capturar y corregir los errores lo antes posible en el proceso de desarrollo. "onstantes y variables "onstantes y variables asocian un nombre 1como ma!imumNumberOf-ogin*ttempts o 2elcome3essage4 con un valor de un tipo en particular 1como el n.mero 56 o la cadena /7ello/4. ,l valor de una constante no se puede cambiar una ve +ue se establece, mientras +ue una variable se puede establecer en un valor diferente en el futuro. # &eclaracin de constantes y variables "onstantes y variables deben ser declaradas antes de ser utiliadas. 8sted declara constantes con la palabra clave let y las variables con la palabra clave var. 7e a+u0 un ejemplo de cmo las constantes y las variables se pueden utiliar para realiar el seguimiento del n.mero de intentos de inicio de sesin de un usuario ha hecho9 ,ste cdigo se puede leer como9 "&eclarar una nueva constante llamada ma!imumNumberOf-ogin*ttempts, y darle un valor de 56. ,ntonces, declare una nueva variable llamada current-ogin*ttempt, y darle un valor inicial de 6." ,n este ejemplo, el n.mero m!imo de intentos de inicio de sesin permitidos se declara como una constante, debido a +ue el valor m!imo nunca cambia. ,l contador de inicio de sesin actual intento se declara como una variable, ya +ue este valor debe ser incrementado despu(s de cada intento fallido de login. Se pueden declarar varias constantes o variables m.ltiples en una sola l0nea, separados por comas9 ,scriba anotaciones :uede proporcionar una anotacin de tipo cuando se declara una constante o variable, para ser claros sobre el tipo de valores +ue la tienda puede constante o variable. ,scribe una anotacin de tipo mediante la colocacin de dos puntos despu(s del nombre de la constante o variable, seguido por un espacio, seguido por el nombre del tipo de usar. ,ste ejemplo proporciona una anotacin de tipo para una variable denominada 2elcome3essage, para indicar +ue la variable puede almacenar valores de cadena9 -os dos puntos en la declaracin significa /... de tipo.../, por lo +ue el cdigo anterior se puede leer como9 /&eclarar una variable llamada 2elcome3essage +ue es de tipo String./ -a frase /de tipo String/ significa /puede almacenar cual+uier valor de cadena./ :iense en ello como +ue significa /el tipo de cosas/ 1o /el tipo de cosas/4 +ue se puede almacenar. -a variable 2elcome3essage ahora se puede establecer en cual+uier valor de cadena sin error9 # "onstantes de denominacin y ;ariables 8sted puede utiliar casi cual+uier carcter en el +ue +uieres constantes y variables nombres, incluyendo los caracteres 8nicode9 -os nombres de constantes y variables no pueden contener s0mbolos matemticos, flechas, de uso privado 1o no vlidos4 los puntos de cdigo 8nicode, o#y la l0nea de caracteres de cuadro de dibujo. )ampoco pueden comenar con un n.mero, aun+ue las cifras pueden ser incluidos en otro lugar dentro del nombre. 8na ve +ue se ha declarado una constante o variable de un cierto tipo, no se puede redeclare de nuevo con el mismo nombre, o cambiarlo para almacenar valores de un tipo diferente. )ampoco se puede cambiar una constante en una variable o una variable en una constante. 8sted puede cambiar el valor de una variable e!istente a otro valor de un tipo compatible. ,n este ejemplo, el valor de friendly2elcome se cambia de /7ello</ a /'onjour</9 * diferencia de una variable, el valor de una constante no se puede cambiar una ve +ue se establece. Si lo intenta, se reporta como un error cuando se compila el cdigo9 # :rinting "onstants and ;ariables :uede imprimir el valor actual de una constante o variable con la funcin println9 println es una funcin global +ue imprime un valor, seguido por un salto de l0nea, a una salida apropiada. Si est trabajando en Xcode, por ejemplo, println imprime su salida en el panel de /consola/ de Xcode. 18na segunda funcin, la impresin, realia la misma tarea sin ane!ar un salto de l0nea al final del valor +ue desea imprimir.4 -a funcin println imprime cual+uier valor de cadena se pasa a la misma9 -a funcin println puede imprimir mensajes de registro ms complejos, de una forma similar a la funcin NS-og. ,stos mensajes pueden incluir los valores actuales de constantes y variables. Swift utilia interpolacin de cadenas para incluir el nombre de una constante o variable como un marcador de posicin en una cadena ms larga, ya una pronta Swift sustituirlo por el valor actual de esa variable constante o. ,nvuelva el nombre entre par(ntesis y escapar con una barra invertida antes del par(ntesis de apertura9 "omentarios 1"O33,N)S="O33,N)4 8se los comments para incluir te!to no ejecutable en su cdigo, como una nota o un recordatorio a s0 mismo. -os comments son ignorados por el compilador Swift cuando se compila el cdigo. -os comentarios en Swift son muy similares a los comentarios en ". sola l0nea comentarios empiean por dos barras inclinadas 1= =49 )ambi(n puede escribir comments de varias l0neas, +ue comienan con una barra inclinada seguida por un asterisco 1= >4 y terminan con un asterisco seguido de una barra diagonal 1> =49 * diferencia de los comments de varias l0neas en ", comentarios de varias l0neas en Swift se pueden anidar dentro de otros comentarios de varias l0neas. ). escribes comments anidados iniciando un blo+ue de comments de varias l0neas y luego iniciar un segundo comment de varias l0neas en el primer blo+ue. ,l segundo blo+ue se cierra entonces, seguido por el primer blo+ue9 "omments de varias l0neas anidadas le permiten comment grandes blo+ues de cdigo de forma rpida y sencilla, incluso si el cdigo ya contiene comentarios de varias l0neas. :unto y coma * diferencia de muchos otros idiomas, Swift no re+uiere +ue usted escriba un punto y coma 1%4 despu(s de cada sentencia en el cdigo, aun+ue puede hacerlo si lo desea. Se re+uieren puntos y comas, sin embargo, si desea escribir varias instrucciones separadas en una sola l0nea9 ,nteros -os enteros son n.meros enteros sin componente fraccionario, como ?@ y #@A. ,nteros bien estn firmadas 1positivo, cero o negativo4 o sin signo 1positivo o cero4. Swift proporciona enteros con signo y sin signo de B, 5C, A@, y C? formas bits. ,stos n.meros enteros siguen una convencin de nomenclatura similar a ", en +ue un entero sin signo de B bits es de tipo 8intB, y un entero con signo de A@ bits es de tipo $ntA@. *l igual +ue todos los tipos de Swift, estos tipos enteros han capitaliado nombres. # -imites de enteros Puede acceder a los valores mnimos y mximos de cada tipo de entero con sus propiedades max y min: -os valores de estas propiedades son del tipo de n.mero de tamaDo apropiado 1tales como 8intB en el ejemplo anterior4 y por lo tanto se pueden utiliar en e!presiones junto a otros valores del mismo tipo. # $nt ,n la mayor0a de los casos, usted no tiene +ue elegir un tamaDo espec0fico de n.mero entero a utiliar en el cdigo. Swift ofrece un tipo entero adicional, $nt, +ue tiene el mismo tamaDo +ue el tamaDo de la plataforma actual palabra nativa9 En una plataforma de 32 bits, Int. es del mismo tamao que Int32. En una plataforma de 64 bits, Int es del mismo tamao que Int64. * menos +ue necesite trabajar con un tamaDo espec0fico de n.mero entero, utilice siempre $nt. para valores enteros en el cdigo. ,sto ayuda cdigo de la coherencia y la interoperabilidad. $ncluso en las plataformas de A@ bits, el $N) puede almacenar cual+uier valor entre #@5?E?BAC?B y @5?E?BAC?E, y es lo suficientemente grande para muchos rangos enteros. # 8$nt Swift tambi(n proporciona un tipo entero sin signo, 8$nt, +ue tiene el mismo tamaDo +ue el tamaDo de la palabra nativa de la plataforma actual9 En una plataforma de 32 bits, UINT es del mismo tamao que UInt32. En una plataforma de 64 bits, UInt es del mismo tamao que UInt64. N.meros de punto flotante N.meros de punto flotante son n.meros con un componente fraccional, como A.5?5FG, 6.5, y #@EA.5F. )ipos de coma flotante pueden representar una gama mucho ms amplia de valores +ue los tipos enteros, y pueden almacenar n.meros +ue son mucho ms grandes o ms pe+ueDos +ue se puede almacenar en un $nt. Swift proporciona dos tipos de n.meros de punto flotante firmados9 Doble representa un nmero de punto flotante de 64 bits. salo !uando los "alores de punto flotante deben ser mu# $randes o parti!ularmente pre!isa. %loat representa un nmero de punto flotante de 32 bits. salo !uando los "alores de punto flotante no requieren pre!isi&n de 64 bits. Seguridad de tipos y la inferencia de tipos Swift es un lenguaje de tipo seguro. 8n lenguaje de tipo seguro +ue te anima a ser claro acerca de los tipos de valores +ue el cdigo puede trabajar. Si parte de su cdigo espera una cadena, no se puede pasar un $nt por error. :or+ue Swift es tipo de seguro se realia comprobaciones de tipo cuando se compila el cdigo y banderas de cual+uier tipo no coinciden como errores ,sto le permite capturar y corregir los errores lo antes posible en el proceso de desarrollo. )ipo de comprobacin le ayuda a evitar errores cuando se trabaja con diferentes tipos de valores. Sin embargo, esto no significa +ue usted tiene +ue especificar el tipo de cada constante y variable +ue se declara. Si no se especifica el tipo de valor +ue necesita, Swift utilia la inferencia de tipos para calcular el tipo apropiado. -a inferencia de tipos permite al compilador deducir el tipo de una e!presin concreta de forma automtica cuando se compila el cdigo, simplemente mediante el e!amen de los valores suministrados por el usuario. &ebido a la inferencia de tipos, Swift re+uiere muchos menos declaraciones de tipos +ue lenguajes como " o Objective#". "onstantes y variables todav0a se escriben de forma e!pl0cita, pero gran parte del trabajo de especificar su tipo est hecho para usted. -a inferencia de tipos es particularmente .til cuando se declara una constante o variable con un valor inicial. ,sto se suele hacer mediante la asignacin de un valor literal 1o literal4 a la constante o variable en el punto +ue se declara. 18n valor literal es un valor +ue aparece directamente en el cdigo fuente, como ?@ y A,5?5FG en los ejemplos a continuacin.4 :or ejemplo, si se asigna un valor literal de ?@ a una nueva constante falta decir de +u( tipo es, Swift infiere +ue desea +ue la constante para ser un fd, por+ue usted ha inicialiado con un n.mero +ue se parece a un entero9 &el mismo modo, si no se especifica un tipo de punto flotante literal, Swift infiere +ue desea crear un doble9 Swift siempre elige doble 1en lugar de Hloat4 cuando inferir el tipo de n.meros de punto flotante. Si se combinan enteros y literales de punto flotante en una e!presin, un tipo de doble ser inferido a partir del conte!to9 ,l valor literal de A no tiene ning.n tipo e!pl0cito en y de s0 mismo, y por lo tanto un tipo de salida apropiado de &oble se infiere de la presencia de un literal de coma flotante como parte de la adicin -os literales num(ricos -os literales enteros se pueden escribir como9 Un nmero de!imal, sin prefi'o Un nmero binario, !on un prefi'o (b Un nmero o!tal, !on un prefi'o (o Un nmero )e*ade!imal !on el prefi'o (* )odos estos literales enteros tienen un valor decimal de 5E9 -iterales de punto flotante pueden ser decimal 1con sin prefijo4 o he!adecimal 1con un prefijo 6 !4. Siempre deben tener un n.mero 1o n.mero he!adecimal4 en ambos lados del punto decimal. )ambi(n pueden tener un e!ponente opcional, indicado por una e may.scula o min.scula de flotadores decimales o un p may.scula o min.scula de flotadores he!adecimales. :ara los n.meros decimales con un e!ponente de e!p, el n.mero base se multiplica por 56e!p9 +i$nifi!a ,.2-e2 ,,2- . ,(2, o ,2-,(. ,,2- E/2 si$nifi!a ,,2- . ,(/2, o (,(,2-. :ara los n.meros he!adecimales con un e!ponente de e!p, el n.mero base se multiplica por @e!p (*%p2 si$nifi!a ,- . 22 o 6(.(. (*%p/2 si$nifi!a ,- . 2/2, o 3,0- )odos estos literales de punto flotante tienen un valor decimal de 5@.5BEF9 -os literales num(ricos pueden contener formato e!tra para +ue sean ms fciles de leer. *mbos n.meros enteros y flotadores pueden ser rellenados con ceros adicionales y pueden contener guiones para ayudar con la lectura. Ning.n tipo de formato afecta el valor subyacente de la literal9