Junior
Ce principiu de programare permite utilizarea generics?
sobes.tech AI
Răspuns de la AI
Polimorfismul subtipurilor.
Genericele în Swift implementează polimorfismul parametric, permițând scrierea de cod care poate lucra cu diferite tipuri fără a le cunoaște în prealabil, dar cerând ca aceste tipuri să respecte anumite restricții (de exemplu, protocoale).
Exemplu de utilizare a generice:
// Definirea unei funcții generice care acceptă doi parametri de același tip T,
// unde tipul T trebuie să respecte protocolul Equatable.
func areEqual<T: Equatable>(_ a: T, _ b: T) -> Bool {
return a == b
}
// Utilizarea funcției generice cu Int
let intResult = areEqual(5, 5) // true
// Utilizarea funcției generice cu String
let stringResult = areEqual("hello", "world") // false
Exemplu de structură generica (stivă):
// Definirea unei structuri generice "Stack", care poate stoca elemente de orice tip T.
struct Stack<T> {
private var elements: [T] = []
mutating func push(_ element: T) {
elements.append(element)
}
mutating func pop() -> T? {
return elements.popLast()
}
}
// Utilizarea structurii generice cu Int
var intStack = Stack<Int>()
intStack.push(1)
intStack.push(2)
let poppedInt = intStack.pop() // 2
// Utilizarea structurii generice cu String
var stringStack = Stack<String>()
stringStack.push("A")
stringStack.push("B")
let poppedString = stringStack.pop() // "B"
Avantajele utilizării generics:
- Siguranța tipurilor: Compilatorul verifică tipurile în timpul compilării, reducând probabilitatea erorilor la runtime.
- Reutilizarea codului: Același cod poate lucra cu diferite tipuri.
- Performanță: Nu este nevoie de conversii de tip în timpul execuției.
- Abstracție: Permite abstractizarea de la tipurile de date specifice.