Sobes.tech
Junior

Čo sú generiká v programovaní?

sobes.tech AI

Odpoveď od AI

Generiká (Generics) sú spôsob, ako písať flexibilný a znovu použiteľný kód, ktorý funguje s akýmkoľvek typom dát a zároveň zachováva typovú bezpečnosť. Umožňujú odložiť špecifikáciu konkrétneho typu až do momentu použitia.

Hlavné výhody:

  • Vyhýbanie sa duplikácii kódu: Môžete napísať algoritmus/štruktúru dát, ktorá funguje s rôznymi typmi.
  • Typová bezpečnosť: Kompilátor kontroluje kompatibilitu typov počas kompilácie, čím predchádza chybám počas behu spojeným s nesprávnymi typmi.
  • Výraznejší kód: Jasnejšie ukazuje zámer vývojára týkajúci sa typov dát.

Príklad použitia v Swift:

Všeobecná štruktúra Stack:

struct Stack<Element> {
    // generický Element sa používa ako typ prvkov poľa
    private var items: [Element] = []

    // generický Element sa používa ako typ parametra
    mutating func push(_ item: Element) {
        items.append(item)
    }

    // generický Element sa používa ako typ návratovej hodnoty
    mutating func pop() -> Element {
        return items.removeLast()
    }
}

Použitie s reťazcami:

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

Použitie s číslami:

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

Bez generík by bolo potrebné napísať samostatné štruktúry pre Stack<String>, Stack<Int>, atď., alebo použiť menej bezpečné prístupy (napríklad Any).