Junior
Milline programmeerimise põhimõte võimaldab kasutada generics?
sobes.tech AI
Vastus AI-lt
Polümorfism päriluses kaudu.
Swiftis rakendavad ģenerikad parametrist polümorfismi, võimaldades kirjutada koodi, mis töötab erinevate tüüpidega teadmata neid ette, kuid nõudes, et need tüübid vastaksid teatud piirangutele (näiteks protokollidele).
Generikute kasutamise näide:
// Generik-funktsiooni defineerimine, mis võtab kaks parameetrit ühe tüübi T,
// kus T tüüp peab vastama Equatable protokollile.
func areEqual<T: Equatable>(_ a: T, _ b: T) -> Bool {
return a == b
}
// Kasutamine Int-iga
let intResult = areEqual(5, 5) // true
// Kasutamine String-iga
let stringResult = areEqual("hello", "world") // false
Generik-struktuuri näide (massiv):
// Generik-struktuuri "Stack" defineerimine, mis võib hoida ükskõik millise tüübi T elemente.
struct Stack<T> {
private var elements: [T] = []
mutating func push(_ element: T) {
elements.append(element)
}
mutating func pop() -> T? {
return elements.popLast()
}
}
// Kasutamine Int-iga
var intStack = Stack<Int>()
intStack.push(1)
intStack.push(2)
let poppedInt = intStack.pop() // 2
// Kasutamine String-iga
var stringStack = Stack<String>()
stringStack.push("A")
stringStack.push("B")
let poppedString = stringStack.pop() // "B"
Generikate eelised:
- Tübiturvalisus: Kompilaator kontrollib tüüpe ajal, vähendades runtime-vigade tõenäosust.
- Koodi korduvkasutus: Üks ja sama kood võib töötada erinevate tüüpidega.
- Tõhusus: Ei ole vaja teha tüüpide teisendamist (type casting) täitmise ajal.
- Abstraktsioon: võimaldab abstraktsiooni konkreetsetest andmetüüpidest.