Swift 4.1 est en préversion dans Xcode 9.3 bêta
lun, 29/01/2018 - 16:45
Un billet sur swift.org annonce la sortie de Swift 4.1 en préversion dans Xcode 9.3 bêta.
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.