Swift

Swift (liberado por Apple) es un lenguaje de programación de propósito general que se usa principalmente para programar bajo los sistemas (iOS y macOS) orientados a dipositivos de Apple tales como iPhone, iPad, Watch, TV. Actualmente, una versión estándar del lenguaje ha sido liberada para Windows y Linux (además de los sistemas de Apple). El lenguaje de programación Swift tiene similitudes con Koltin que se usa para dispositivos Android.

Terminando la segunda década del siglo 21, aparece un marco de trabajo que solo opera en los sistemas de Apple (iOS y macOS) cuyo nombre incluye el nombre de este lenguaje, me refiero a SwiftUI, que no es lo mismo que Swift aunque usa el lenguaje. Dicha tecnología plantea una programación declarativa (como React Native o Flutter) que ha tenido acogida en la comunidad de desarrolladores para interfaces de usuario en los sistemas de Apple.

Esta es una referencia ágil para quién tenga nociones de programación o codifique con algún otro lenguaje, también a modo de repaso y uso frecuente. Siendo así, tener esta información como memoria te resultará simple de acceder a los fundamentos, incluso como prueba de concepto sobre el lenguaje.

Tips esenciales del lenguaje

Para quien tenga habilidades, experticia en programación y/o requiera agilidad en conceptos técnicos, pueden resumirse los siguientes tips esenciales del lenguaje:

  1. Tipos de datos básicos: Int, Double, Bool, String, Tuples. Las variables se definen con var o let (si no cambia o no muta) y se puede asignar el valor directamente sin necesidad de especificar el tipo de datos. Si requiere especificarse el tipo de datos se usa : y luego el tipo.
  2. Las funciones se definen con func, luego los parámetros van entre paréntesis (...), continuando con el nombre del parámetro, el caracter : que separa el tipo de datos posteriormente (y separando los parámetros con coma ,). El tipo de datos a retornar se indica después de ->. Además, se usa return para retornar un valor. La función principal de un programa se denomina main.
  3. Para el bloque de la función o el flujo de control se usan llaves {}. Las sentencias pueden terminar sin punto y coma, siendo solamente necesario para separar y admitir varias sentencias en la misma línea (por lo demás, no se usa).
  4. El flujo de control es semejante a lenguajes como C, Java, Javascript, Kotlin, es decir que se cuenta con una anatomía cercana para el uso de if, for, while, incluso para el manejo de excepciones (try).
  5. El constructor de una clase lleva el nombre init y la clase se define con la palabra reservada class y el nombre que debe iniciar en mayúscula.
  6. Siendo un lenguaje moderno, incorpora el operador de nulo seguro (null-safe): ?..

Ejemplo esencial

import Swift

print("Hi there!")

Tipos de datos básicos

Declaración de variables

Se puede declarar variables con las palabras reservadas var y let, esta última para indicar que el valor no cambia o no es mutable.

Ejemplo:

var variable: String = "Ana"
let immutable: String = "Ana"
var n: Int = 0

Definición de funciones

func plus2(a: Int, b: Int) -> Int {
    return a + b
}

Comentarios

// Esto es un comentario de fin de línea

/*
   Este es un comentario de bloque
*/

Condicionamiento if / else (if)

if i == 1 {
    print("one")
}
else if i == 2 {
    print("two")
}
else {
    print("aha")
}

Nótese que en las condiciones no se ha usado paréntesis (()) siendo opcionales.

El Ciclo For

for item in list {
    print(item)
}

Puede interrumpirse un ciclo con la sentencia break o dar el paso a la siguiente iteración con la setencia continue.

El Ciclo While

while let i < 10 {
    i++
}

Evaluador Switch

var i = 0
switch i {
    case 1: print("one")
    case 2: print("two")
    default: print("aha")
}

Excepciones

do {
    ...
}
catch Exception {
    ...
}

Clases

La programación orientada a objetos (OOP) tiene su propia base de conceptos que abre un capítulo aparte para su comprensión, se puede decir que se pasa de pensar en funciones a clases que agrupan métodos (funciones) y propiedades (variables), siendo de gran útilidad para la reutilización de código. Como referencia simplemente se presenta la anatomía de una clase.

class Shape(val name: String) {
    var sides: Int? = null

    init(name: String, sides: Int) {
        self.sides = sides
    }
}

Struct

struct Person {
    var name: String
    var age: Int
}

Probando Swift en Windows

Para instalar este lenguaje en Windows te dirijes al enlace de descarga del sitio oficial. Sin embargo, se usa Windows Universal Runtime y es necesario que tengas instalado previamente Visual Studio 2019, por lo que si no lo tienes instalado debes hacer el proceso respectivo asegurándote que se incluye esta característica. Esto habilitará la consola de comandos de Native Tools x64 for Visual Studio 2019. Puedes revisar material sobre esto en Internet.

Los comandos a ejecutar con privilegios de administrador usando Native Tools x64 for Visual Studio 2019 son los siguiente:

copy %SDKROOT%\usr\share\ucrt.modulemap "%UniversalCRTSdkDir%\Include\%UCRTVersion%\ucrt\module.modulemap"
copy %SDKROOT%\usr\share\visualc.modulemap "%VCToolsInstallDir%\include\module.modulemap"
copy %SDKROOT%\usr\share\visualc.apinotes "%VCToolsInstallDir%\include\visualc.apinotes"
copy %SDKROOT%\usr\share\winsdk.modulemap "%UniversalCRTSdkDir%\Include\%UCRTVersion%\um\module.modulemap"

Para el siguiente el comando, cerramos la consola de administración y abrimos de nuevo Native Tools x64 for Visual Studio 2019 sin los privilegios de administración. Entonces ejecutamos:

set SWIFTFLAGS=-sdk %SDKROOT% -resource-dir %SDKROOT%\usr\lib\swift -I %SDKROOT%\usr\lib\swift -L %SDKROOT%\usr\lib\swift\windows

Este comando generalmente se ejcuta cada vez que vayas a usar Native Tools x64 for Visual Studio 2019 para compilar. Y cada vez que requieras compilar un programa de Swift bajo Windows, se debe usar la línea de comandos de Native Tools x64 for Visual Studio 2019.

Para compilar un programa escrito en Swift bajo Windows, si por ejemplo lo llamas hello.swift, ejecutas un comando como el siguiente:

swiftc %SWIFTFLAGS% -emit-executable -o hello.exe hello.swift

© 2021 by César Arcila