Swift dispose d'une nouvelle bibliothèque : Swift Algorithms
mar, 13/10/2020 - 15:03
L'équipe du langage Swift vient mettre à disposition le code d'un nouveau package : Swift Algorithms. L'ingénieur d'Apple Nat Cook le présente comme venant combler des lacunes de la bibliothèque standard de Swift.
Swift Algorithims expose des fonctionnalités similaires à celles de la bibliothèque itertools de Python ou la bibliothèque algorithms de C++.
Le package Algorithms comprend une multitude d'algorithmes génériques puissants que l'on trouve fréquemment dans d'autres langages de programmation populaires. Nous espérons que ce nouveau package aidera les gens à adopter les algorithmes, améliorant ainsi la qualité et les performances de leur code, souligne Nat Cook.
Le développement de Swift Algorithms n'en est qu'à ses débuts. La bibliothèque doit évoluer rapidement. Elle est toutefois déjà riche. On y trouve par exemple des algorithmes de combinaison, de permutation, d'unicité, de produits... Plus clairement, l'algorithme produit permet d'itérer toutes les paires d'éléments de deux collections différentes. Par exemple :
let seasons = ["winter", "spring", "summer", "fall"]
for (year, season) in product(1900...2020, seasons) {
// ...
}
// est équivalent à
for years in 1900...2020 {
for season in seasons {
// ...
}
}
A remarquer aussi l'algorithme chunked, qui permet de diviser une collection en sous-séquences consécutives. L'exemple d'utilisation ci-dessous sépare un tableau en sous-séquences ascendantes :
let numbers = [10, 20, 30, 10, 40, 40, 10, 20]
let chunks = numbers.chunked(by: { $0 <= $1 })
// [[10, 20, 30], [10, 40, 40], [10, 20]]
Cet autre exemple d'utilisation recherche un changement dans la transformation de chaque valeur successive d'une collection. Vous pouvez l'utiliser pour séparer une liste de noms en groupes selon le premier caractère, comme ceci :
let names = ["Cassie", "Chloe", "Jasmine", "Jordan", "Taylor"]
let chunks = names.chunked(on: \.first)
// [["Cassie", "Chloe"], ["Jasmine", "Jordan"], ["Taylor"]]
Swift Algoritms est un logiciel libre sous licence Apache 2.0, disponible sur GitHub.