hello_world.swift
🔹 Tipos de Datos
Swift es un lenguaje fuertemente tipado con inferencia de tipos.
Strings
let saludo = "Hola, Swift!"let nombre = "John"print("\(saludo) \(nombre)")
Numbers
let entero: Int = 42let decimal: Double = 3.14print(entero + Int(decimal)) // 45
Booleans
let esVerdadero = truelet esFalso = falseprint(esVerdadero, esFalso)
Optionals
var mensaje: String? = "Hola"print(mensaje ?? "Sin valor") // "Hola"mensaje = nilprint(mensaje ?? "Sin valor") // "Sin valor"
Tipos de datos y operadores
let entero: Int = 42let decimal: Double = 3.14let texto: String = "Hola, Swift!"let lista: [Int] = [1, 2, 3]let conjunto: Set<String> = ["A", "B", "C"]let diccionario: [String: String] = ["clave": "valor"]
Operadores aritméticos
Operador | Descripción | Ejemplo |
---|---|---|
+ | Suma | a + b |
- | Resta | a - b |
* | Multiplicación | a * b |
/ | División | a / b |
% | Módulo (resto de la división) | a % b |
&+ | Suma con desbordamiento | a &+ b |
&- | Resta con desbordamiento | a &- b |
&* | Multiplicación con desbordamiento | a &* b |
+= | Incremento y asignación | a += 2 |
-= | Decremento y asignación | a -= 2 |
Operadores de comparación
Operador | Descripción | Ejemplo |
---|---|---|
== | Igual a | a == b |
!= | No igual a | a != b |
> | Mayor que | a > b |
< | Menor que | a < b |
>= | Mayor o igual que | a >= b |
<= | Menor o igual que | a <= b |
Operadores lógicos
Operador | Descripción | Ejemplo |
---|---|---|
&& | AND lógico | a > 0 && b > 0 |
|| | OR lógico | a > 0 || b > 0 |
! | Negación lógica | !a |
Operadores bitwise (a nivel de bits)
Operador | Descripción | Ejemplo |
---|---|---|
& | AND bit a bit | a & b |
| | OR bit a bit | a | b |
^ | XOR bit a bit | a ^ b |
~ | Complemento bit a bit (NOT) | ~a |
<< | Desplazamiento a la izquierda | a << 2 |
>> | Desplazamiento a la derecha | a >> 2 |
Operadores de asignación
Operador | Descripción | Ejemplo |
---|---|---|
= | Asignación | a = 5 |
+= | Suma y asigna | a += 2 (equivale a a = a + 2 ) |
-= | Resta y asigna | a -= 2 |
*= | Multiplica y asigna | a *= 2 |
/= | Divide y asigna | a /= 2 |
%= | Módulo y asigna | a %= 2 |
Operadores de control de nulos
Operador | Descripción | Ejemplo |
---|---|---|
?? | Operador Nil Coalescing (valor por defecto si nil ) | a ?? "Valor por defecto" |
?. | Encadenamiento opcional (evita errores en nil ) | obj?.prop |
! | Forced Unwrapping (forzar extracción de nil ) | a! |
Operadores especiales de Swift
Operador | Descripción |
---|---|
... | Rango cerrado (1...5 incluye 1 y 5) |
..< | Rango semiabierto (1..<5 incluye 1 pero no 5) |
is | Verifica el tipo de un objeto (a is String ) |
as? | Conversión de tipo opcional (a as? String ) |
as! | Conversión forzada de tipo (a as! String ) |
try? | Manejo de errores opcional (try? someFunction() ) |
try! | Manejo de errores forzado (try! someFunction() ) |
🔹 Estructuras de Control
Condicionales
let edad = 20if edad >= 18 { print("Mayor de edad")} else { print("Menor de edad")}
Switch
let opcion = 2switch opcion {case 1: print("Opción 1")case 2: print("Opción 2")default: print("Opción no válida")}
otros ejemplos de switch
let resultado = [1: "uno", 2: "dos", 3: "tres"][opcion] ?? "otro"print(resultado)
🔹 Funciones en Swift
func saludo() { print("Hola desde una función!")}
func suma(_ a: Int, _ b: Int) -> Int { return a + b}
saludo()print(suma(3, 5))
Parámetros opcionales
func saludar(nombre: String, apellido: String = "Desconocido") { print("Hola, \(nombre) \(apellido)")}saludar(nombre: "Juan")
Funciones de orden superior
func ejecutar(_ funcion: () -> Void) { funcion()}
ejecutar { print("Ejecutando función anónima") }
🔹 Colecciones (Arrays, Sets y Diccionarios)
Arrays
var lista = ["Swift", "iOS", "Xcode"]lista.append("MacOS")print(lista)
Sets (Colecciones sin duplicados)
let conjunto: Set<String> = ["Swift", "iOS", "Swift"]print(conjunto) // {"Swift", "iOS"}
Diccionarios (Clave-Valor)
var diccionario: [String: String] = ["nombre": "Carlos", "edad": "25"]print(diccionario["nombre"] ?? "Desconocido")
🔹 Bucles en Swift
For clásico
for i in 0..<lista.count { print(lista[i])}
For-in
for item in lista { print("📝 \(item)")}
While y Repeat-While
var contador = 0while contador < 3 { print("Iteración \(contador)") contador += 1}
repeat { print("Iteración \(contador)") contador += 1} while contador < 6
🔹 OOP en Swift
class Persona { var nombre: String var edad: Int
init(nombre: String, edad: Int) { self.nombre = nombre self.edad = edad }
func presentarse() { print("Hola, soy \(nombre) y tengo \(edad) años.") }}
let p = Persona(nombre: "Carlos", edad: 30)p.presentarse()
🔹 Enumeraciones en Swift
enum Lenguajes: String { case Swift = "Swift" case Java = "Java" case Python = "Python"}
let lenguaje = Lenguajes.Swiftprint("Lenguaje seleccionado: \(lenguaje.rawValue)")
🔹 Manejo de Excepciones
enum ErrorDivision: Error { case divisionPorCero}
func dividir(_ a: Int, _ b: Int) throws -> Int { if b == 0 { throw ErrorDivision.divisionPorCero } return a / b}
do { let resultado = try dividir(10, 0) print(resultado)} catch { print("❌ Error: División por cero")}
🔹 Programación Asíncrona en Swift
import Foundation
func obtenerDatos() async { print("⌛ Cargando datos...") try? await Task.sleep(nanoseconds: 2_000_000_000) print("✅ Datos cargados")}
Task { await obtenerDatos()}
🔹 Protocolos en Swift
protocol Caminante { func caminar()}
class Persona: Caminante { func caminar() { print("Estoy caminando...") }}
let p = Persona()p.caminar()
🔹 Extensiones en Swift
extension String { func enMayusculas() -> String { return self.uppercased() }}
print("swift".enMayusculas()) // "SWIFT"
Hello, Swift! 🚀