Swift 3.0 vient d'être lancé, comme l'écrit Ted Kremenek, ingénieur Apple, apportant des changements bienvenus au langage et à la librairie standard, en plus d'un portage Linux et d'une première version officielle du gestionnaire de paquet Swift.
Swift 3 est la première version majeure depuis l'ouverture open source du langage par Apple fin 2015 et met en oeuvre près de 90 propositions discutées et approuvées par le processus d'évolution de Swift.
Une partie des nombreux changements de Swift 3.0 vise à nettoyer l'API, comme dans les guides du Swift API Design, en supprimant quelques choix qui semblaient être un héritage d'Objective-C. L'impact est de rendre la syntaxe de Swift plus courte et consistante avec :
- L'obligation de nommer le premier paramètre des fonctions et méthodes (plutôt qu'une omission délibérée avec
_
) ce qui permet d'écrire :
aString.write(toFile: "filename", atomically: true, encoding: NSUTF8StringEncoding)
UIFont.preferredFont(forTextStyle: UIFontTextStyleSubheadline)
plutôt que :
aString.writeToFile("filename", atomically: true, encoding: NSUTF8StringEncoding)
UIFont.preferredFontForTextStyle(UIFontTextStyleSubheadline)
- La suppression de mots inutiles qui permet aux développeurs d'écrire :
UIColor.red()
plutôt que :
UIColor.redColor()
Les deux règles décrites ont un effet plus important en les mixant, avec par exemple la syntaxe suivante :
aString.stringByReplacingOccurrencesOfString("A", withString: "a")
devient :
aString.replacingOccurrences(of: "A", with: "a")
Un autre domaine où Swift 3.0 a rationalisé les choses est la gestion des fonctions C appartenant à plusieurs framework Cocoa. Parmi les exemples possibles, toutes les fonctions de Core Graphics commençant par CGContext
, CGAffineTansform
, CGPDFDocument
, etc, peuvent maintenant être appelées comme si elles étaient les méthodes d'un objet :
if let ctx = UIGraphicsGetCurrentContext() {
ctx.setFillColor(UIColor.red().cgColor)
...
}
CGAffineTransform(translationX: 64, y: 0)
Swift 3 présente aussi des modifications de syntaxe permettant de nettoyer le langage, comme le retrait des opérateurs ++
et --
, du var
pour les paramètres des fonctions, et des boucles style C avec des conditions et des incréments, qui représentaient plus d'inconvénients que d'avantages.
La liste des modifications de Swift 3 est trop longue pour la couvrir ici. Vous pouvez en trouver le détail dans l'annonce officielle.