Middle+
Mis on seotud tüüp (associated type)?
sobes.tech AI
Vastus AI-lt
Seotud tüüp (associated type) on asendus (täitja nimi) tüübile, mida tegelikult kasutatakse protokollis. See näitab, et protokoll nõuab teatud tüüpi, kuid ei määra selle nime selgelt enne, kui protokoll võetakse vastu konkreetse tüübi või selle laienduse kaudu.
Eelised:
- Paindlikkus: võimaldab protokollidel jääda universaalseks, töötades iga tüüpi, mis vastab seotud tüübi nõuetele.
- Tugev tüübikindlus: kompilaator teab konkreetset tüüpi ajal, vältides vigu ja tagades tüübiturvalisuse.
- Paranenud loetavus: protokoll selgelt näitab, millise andmetüübiga ta töötab, muutes selle kasutamise ennustatavamaks.
Deklaratsioon toimub võtmesõnaga associatedtype.
Näide:
protocol Container {
associatedtype Item // Seotud tüüp Item
var items: [Item] { get set }
mutating func append(_ item: Item)
}
struct IntContainer: Container {
// Selge Item tüübi määramine (valikuline, Swift saab selle ise välja arvutada)
typealias Item = Int
var items: [Int] = []
mutating func append(_ item: Int) {
items.append(item)
}
}
struct StringContainer: Container {
var items: [String] = [] // Swift arvab, et Item = String
mutating func append(_ item: String) {
items.append(item)
}
}
Saab lisada piiranguid seotud tüübile, näiteks nõuda, et see vastaks teisele protokollile:
protocol ComparableContainer {
associatedtype Element: Comparable // Element peab olema Comparable
var elements: [Element] { get set }
}