Swift 4.1 disponible en version finale

Par:
fredericmazue

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.