Junior
Kuris programavimo principas leidžia naudoti generikus?
sobes.tech AI
Atsakymas iš AI
Polimorfizmas paveldėjime.
Swift'e generikai įgyvendina parametrinį polimorfizmą, leidžiant rašyti kodą, kuris gali dirbti su įvairiais tipais, nežinant jų iš anksto, bet reikalaujant, kad šie tipai atitiktų tam tikras apribojimus (pavyzdžiui, protokolus).
Generikų naudojimo pavyzdys:
// Generik funkcijos apibrėžimas, kuri priima du parametrus vieno tipo T,
// kurio tipas turi atitikti Equatable protokolą.
func areEqual<T: Equatable>(_ a: T, _ b: T) -> Bool {
return a == b
}
// Naudojimas su Int
let intResult = areEqual(5, 5) // true
// Naudojimas su String
let stringResult = areEqual("hello", "world") // false
Generikų struktūros pavyzdys (masyvas):
// Generik struktūros "Stack" apibrėžimas, kuri gali saugoti bet kokio tipo T elementus.
struct Stack<T> {
private var elements: [T] = []
mutating func push(_ element: T) {
elements.append(element)
}
mutating func pop() -> T? {
return elements.popLast()
}
}
// Naudojimas su Int
var intStack = Stack<Int>()
intStack.push(1)
intStack.push(2)
let poppedInt = intStack.pop() // 2
// Naudojimas su String
var stringStack = Stack<String>()
stringStack.push("A")
stringStack.push("B")
let poppedString = stringStack.pop() // "B"
Generikų privalumai:
- Tipų saugumas: Kompiliatorius tikrina tipus kompiliacijos metu, sumažindamas klaidų tikimybę runtime.
- Kodo pakartojamumas: Vienas ir tas pats kodas gali dirbti su skirtingais tipais.
- Veikimas: Nereikia atlikti tipų konvertavimo (type casting) vykdymo metu.
- Abstrakcija: Leidžia abstraguotis nuo konkrečių duomenų tipų.