Sobes.tech
Junior

Co jsou generika v programování?

sobes.tech AI

Odpověď od AI

Generika (Generics) je způsob, jak psát flexibilní a znovu použitelný kód, který funguje s jakýmkoli typem dat a zároveň zachovává typovou bezpečnost. Umožňuje odložit specifikaci konkrétního typu až do okamžiku použití.

Hlavní výhody:

  • Vyhýbání se duplicitě kódu: Můžete napsat algoritmus/strukturu dat, která funguje s různými typy.
  • Typová bezpečnost: Kompilátor kontroluje kompatibilitu typů během kompilace, čímž předchází chybám za běhu spojeným s nesprávnými typy.
  • Výraznější kód: Jasně ukazuje záměry vývojáře ohledně typů dat.

Příklad použití ve Swift:

Obecná struktura Stack:

struct Stack<Element> {
    // generický Element se používá jako typ prvků pole
    private var items: [Element] = []

    // generický Element se používá jako typ parametru
    mutating func push(_ item: Element) {
        items.append(item)
    }

    // generický Element se používá jako typ návratové hodnoty
    mutating func pop() -> Element {
        return items.removeLast()
    }
}

Použití s řetězci:

var stringStack = Stack<String>()
stringStack.push("hello")
stringStack.push("world")
let lastString = stringStack.pop() // lastString má typ String

Použití s čísly:

var intStack = Stack<Int>()
intStack.push(1)
intStack.push(2)
let lastInt = intStack.pop() // lastInt má typ Int

Bez generik by bylo nutné psát samostatné struktury pro Stack<String>, Stack<Int> atd., nebo používat méně bezpečné přístupy (například Any).