Y de repente llego Swift
No creo ser el único que la tecnología le apasiona y que de vez en cuando nos da agradables sorpresas en modo de renovación y ganar de mejorar. Y eso es precisamente lo que ha pasado con Swift. Un lenguaje de nueva generación y tremendamente dinámico en su programación.
La primera sensación ha sido compararlo con Python, pero luego me vinieron tanto PHP como Javascript.
Las principales novedades de Swift respecto a Objective C son:
-
Los ficheros incluyen código de implementación y definición de manera simultánea, adiós a los ficheros .h y .m ahora tienen extensión
-
Variables y Constantes
-
Definición de variables con var y de constantes con let.
-
Tipado dinámico de variable, no es necesario indicar el tipo de la variable cuando se declara, cuando le asignas un valor cambiará automáticamente al tipo del valor.
-
Aun así puedes decidir utilizar los tipos
-
let doble: Double=70.0
-
Fuera los ; ya no se necesitan
-
No se pueden concatenar cadenas y números por ejemplo sin indicar un (Casting). Creo que esto es para mi gusto un fail, en toda regla
-
let etiqueta= “texto” + (String) numero
-
Conversiones a cadena directa
-
let cadena = ” Cadena con (numero) variable”
-
Arrays de una manera más rápida con []
-
let array = [“uno”,“dos”,“tres”];
-
Arrays asociativos del tirón
-
let array = [“clave”:“valor”,“clave2”:“valor2”];
-
Estructuras de control
-
Condiciones sin paréntesis pero llaves obligatorias
-
if numero == 50 { println(“es 50!”)}
-
Los Switch pueden usar cualquier tipo de dato
-
Los for-in se pueden usar con diccionarios
-
for(clave,valor) in diccionario{}
-
Uso de .. en el for in
-
for i in 0..3 {}
-
Funciones
-
declaradas con la palabra reservada func
-
func funcion (){}
-
la declaración del tipo que devuelven es con ->
-
func funcion () -> String {return “cadena”}
-
pueden devolver más de un parámetro
-
func funcion () -> (String,String){ return (“uno”,“dos”)}
-
el paso de parámetros varía
-
func funcion (parametro: String) {}
-
Se puede parar parámetros en base a un array
-
func funcion (parametros: String…){}
-
funcion (“uno”,“dos”)
-
Cuando se pasan los parámetros de una función no hace falta indicar el tipo del dato pasados, sólo los valores
-
Se pueden anidar funciones, OMG
-
Se pueden devolver funciones
-
Se pueden pasar funciones como parámetros, adiós a los selectores
-
Se pueden pasar bloques de código como parámetros, bienvenidos del mundo JS
-
Clases
-
las clases se definen con la palabra reservada class
-
class MiClase {//atributos y metodos}
-
Instanciación de una clase con el constructor con el mismo nombre de la clase
-
var objeto = MiClase()
-
Acceso a métodos con el .
-
objeto.metodo()
-
El constructor se sigue llamando init pero no es necesario que devuelva self
-
El destructor de la clase es el método deinit
-
La herencia va de una manera parecida
-
class MiClase:MiPadre{}
-
Podemos hacer uso de la palabra reservada override para sobre escribir un método del padre
-
Podemos llamar al constructor del padre
-
super.init(parametros)
-
Podemos definir el getter y el setter de una propiedad directamente después de la definición de la propiedad
-
var propiedad: String {get{return propiedad} set{propiedad=newValue}}
-
Podemos definir métodos que se ejecuten antes o después de que una propiedad se vaya a establecer (set) con willSet o didSet de manera muy parecida al set de una propiedad
-
Los métodos al ser invocados, excepto con el primer valor, deben pasarse los nombres de los parámetro antes que el valor
-
objeto.metodo(“valorparametro1”, nombreparametro1: “valorsegundoparametro”)
-
Se puede usar la ? cates de acceder a un metodo o instanciación si no se van a pasar todos los parámetros
-
Enumeraciones
-
Pueden tener asociados métodos
-
Se usará la palabra reservada enum para definirlos
-
enum: Enumerado: Int {// cases o métodos}
-
Protocolos
-
Las clases las estructuras y las enumeraciones pueden implementar protocolos
-
la palabra reservada mutating permite definir métodos que cambian la estructura, deberá marcarse también la “implementación” de la estructura
-
Extensiones
-
La palabra reservada extension permite añadir funcionalidades a tipos existentes, similar a los catálogos
-
extension Int {//nuevos métodos}
-
Generics
-
Son funciones o enum que permiten pasar un tipo de dato
-
func funcion
()
Esta obra está bajo una licencia Creative Commons Reconocimiento-NoComercial-CompartirIgual 3.0 España.