Junior
Czym są generyki w programowaniu?
sobes.tech AI
Odpowiedź od AI
Generyki (Generics) to sposób na pisanie elastycznego, wielokrotnego użytku kodu, który działa z dowolnymi typami danych, zachowując bezpieczeństwo typów. Pozwalają odłożyć określenie konkretnego typu do momentu użycia.
Główne zalety:
- Unikanie duplikacji kodu: Można napisać jeden algorytm/strukturę danych, działającą z różnymi typami.
- Bezpieczeństwo typów: Kompilator sprawdza zgodność typów podczas kompilacji, zapobiegając błędom czasu wykonania związanym z nieprawidłowymi typami.
- Bardziej wyrazisty kod: Wyraźniej pokazuje intencje programisty dotyczące typów danych.
Przykład użycia w Swift:
Ogólna struktura Stack:
struct Stack<Element> {
// generyczny Element używany jako typ elementów tablicy
private var items: [Element] = []
// generyczny Element używany jako typ parametru
mutating func push(_ item: Element) {
items.append(item)
}
// generyczny Element używany jako typ zwracanego wyniku
mutating func pop() -> Element {
return items.removeLast()
}
}
Użycie z łańcuchami:
var stringStack = Stack<String>()
stringStack.push("hello")
stringStack.push("world")
let lastString = stringStack.pop() // lastString ma typ String
Użycie z liczbami:
var intStack = Stack<Int>()
intStack.push(1)
intStack.push(2)
let lastInt = intStack.pop() // lastInt ma typ Int
Bez generyków, trzeba by pisać osobne struktury dla Stack<String>, Stack<Int>, itd., lub używać mniej bezpiecznych podejść (np. Any).