Swift 4.1 disponible en version finale
mar, 03/04/2018 - 16:06
Apple vient d'annoncer officiellement la disponibilité de langage Swift en version 4.1. Swfit 4.1 est disponible pour les plates-formes macOS et Linux. Il est bien sûr inclus dans Xcode 9.3. Parallèlement Apple fournit des binaires officiels pour Ubuntu 14.04, Ubuntu 16.04 et Ubuntu 16.10.
Swift 4.1 est compatible au niveau source avec Swift 4.0, mais n'est pas compatible au niveau binaire.
Swift 4.1 vient avec des améliorations intéressantes, qui rendent le langage moins verbeux.
Soit par exemple un type Person :
struct Person {
var firstName: String
var middleName: String
var age: Int
var city: String
}
Jusqu'ici, si l'on voulait pouvoir comparer deux instances de ce type, il fallait le déclarer de cette manière :
struct Person: Equatable {
var firstName: String
var lastName: String
var age: Int
var city: String
static func ==(lhs: Person, rhs: Person) -> Bool {
return lhs.firstName == rhs.firstName && lhs.lastName == rhs.lastName && lhs.age == rhs.age && lhs.city == rhs.city
}
}
La méthode ==, au coeur de l'opération de comparaison, n'est pas le plus beau code qui soit. Fastidieux à écrire, fastidieux à relire, laid.
Swift 4.1 amène le support synthétisé du protocole Equatable. Concrètement Swift 4.1 va générer automatiquement une méthode == pour faire une comparaison membre à membre de la structure de donnée Equatable, comme le fait le code de la méthode == de l'exemple ci-dessous. Soulagement... :-)
De façon similaire, Swift 4.1 amène le support synthétisé du protocole Hashable. Autrement dit, Swift 4.1 va générer automatiquement une propriété hashValue pour les types Hashable.