Middle+
Qu'est-ce qu'un type associé (associated type) ?
sobes.tech IA
Réponse de l'IA
Le type associé (associated type) est un espace réservé (remplaçant de nom) pour un type qui sera effectivement utilisé dans le protocole. Il indique que le protocole exige la présence d’un type spécifique, mais ne le définit pas explicitement jusqu’à ce que le protocole soit adopté par un type concret ou dans son extension.
Avantages :
- Flexibilité : Permet aux protocoles de rester universels, en travaillant avec n’importe quel type conforme aux exigences du type associé.
- Typage fort : Le compilateur connaît le type précis lors de la compilation, ce qui empêche les erreurs et garantit la sécurité du type.
- Lisibilité améliorée : Le protocole déclare explicitement le type de données avec lequel il travaille, le rendant plus prévisible.
Il est déclaré à l’aide du mot-clé associatedtype.
Exemple :
protocol Container {
associatedtype Item // Type associé Item
var items: [Item] { get set }
mutating func append(_ item: Item)
}
struct IntContainer: Container {
// Spécification explicite du type Item (optionnel, Swift peut l’inférer)
typealias Item = Int
var items: [Int] = []
mutating func append(_ item: Int) {
items.append(item)
}
}
struct StringContainer: Container {
var items: [String] = [] // Swift infère que Item = String
mutating func append(_ item: String) {
items.append(item)
}
}
Il est possible d’ajouter des restrictions au type associé, par exemple, exiger qu’il conforme à un autre protocole :
protocol ComparableContainer {
associatedtype Element: Comparable // Element doit être Comparable
var elements: [Element] { get set }
}