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.
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.
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(_ 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(_ 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!