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 <Tipo>()

Licencia Creative Commons

Comments

Leave a Reply

XHTML: You can use these tags: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.

Uso de cookies

Este sitio web utiliza cookies para que usted tenga la mejor experiencia de usuario. Si continúa navegando está dando su consentimiento para la aceptación de las mencionadas cookies y la aceptación de nuestra política de cookies, pinche el enlace para mayor información. ACEPTAR

Aviso de cookies