Novedades en Swift 5.8

Novedades de Swift 5.8

Swift, el lenguaje de programación de Apple, continúa evolucionando a pasos agigantados. Con la llegada de Swift 5.8, los desarrolladores cuentan con un conjunto de herramientas y características aún más poderosas para crear aplicaciones de alta calidad. En este artículo, exploraremos algunas de las novedades más destacadas de esta versión.

1. Eliminar las limitaciones sobre las variables en los generadores de resultados:SE-0373

Esta novedad disminuye algunas de las restricciones sobre las variables dentro de los generadores de resultados. Consulte este post para más información.

2. Compatibilidad hacia atrás para las nuevas funciones:SE-0376

Esto agrega un nuevo atributo @backDeployed que permite el uso de las nuevas APIs en versiones enteriores de los marcos. Se aplica a funciones, métodos, subíndices y propiedades calculadas.

La técnica que utiliza Swift es escribir el código de la nuena API en el binario de su app y luego realizando una verificación en tiempo de ejecución: si su usuario está en una versión nueva adecuada del sistema operativo, se utilizará la versión propia del sistema de la función; de lo contrario, se utilizará la versión copiada en el binario de su aplicación.

3. Permitir el Self implícito para las capturas débiles de self (weak self):SE-0365

Swift sigue optimizando su sintaxis en relación a la eliminación de los self implícitos de los cierres. Ahora lo elimina en lugares donde weak self ha deselvuelto una captura. Para más información lea este post.

4.Nombres de ficheros concisos:SE-0274

Se ajusta el identificador mágico #file para utilizar el formato “módulo/nombreDeArchivo, por ejemplo:  MyApp/ContentView.swift. Anteriormente, #file contenia la ruta completa al archivo Swift que es innecesariamente largo y puede que contenga elementos que no desea revelar.

5.Abrir argumentos existenciales a parámetros opcionales: SE-0375

Esta novedad extiende una carcaterística en Swift 5.7 que permitía llamar a funciones genéricas usndo un protocolo, solucionando una pequeña pero molesta incosistencia: Swift 5.7 no permitia este comportamiento con opcionales. Ahora Swift 5.8 si lo permite.

				
					//Código en Swift 5.7, funciona porque el parámetro genérico no es opcional:
func double<T: Numeric>(_ number: T) -> T {
    number * 2
}

let first = 1
let second = 2.0
let third: Float = 3

let numbers: [any Numeric] = [first, second, third]

for number in numbers {
    print(double(number))
}

//Ahora, en Swift 5.8 si es posible que sea opcional:
func optionalDouble<T: Numeric>(_ number: T?) -> T {
    let numberToDouble = number ?? 0
    return  numberToDouble * 2
}

for number in numbers {
    print(optionalDouble(number))
}
				
			

6. Soporte para downcasts en colecciones para patrones:

 Esto viene a corregir tanbién una molesta incosistencia donde la conversión descendente de una colección (por ejemplo la conversión de una matriz de classe A a una matriz de clase B) no estaría pemitida en algunas circunstancias. Por ejemplo, este código ahora es permitido en Swift 5.8:

				
					class Pet { }
class Dog: Pet {
    func bark() { print("Woof!") }
}

func bark(using pets: [Pet]) {
    switch pets {
    case let pets as [Dog]:
        for pet in pets {
            pet.bark()
        }
    default:
        print("No barking today.")
    }
}
				
			

Conclusión

Swift 5.8 es una versión repleta de novedades que hacen que el desarrollo de aplicaciones sea más fácil y divertido. Si aún no has probado esta nueva versión, te animo a que lo hagas y descubras todas las posibilidades que ofrece.

Gracias por leer, si te ha parecido útil déjamelo en los comentarios. Feliz codificación!

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Scroll al inicio