Sobes.tech
Junior

Kas yra generikai programavime?

sobes.tech AI

Atsakymas iš AI

Generics (Generics) yra būdas rašyti lankstų ir daugkartinio naudojimo kodą, kuris veikia su bet kokio tipo duomenimis ir išlaiko tipų saugumą. Jie leidžia atidėti konkretaus tipo nurodymą iki naudojimo momento.

Pagrindiniai privalumai:

  • Kodo dubliavimosi išvengimas: Galite parašyti algoritmą/duomenų struktūrą, kuri veikia su skirtingais tipais.
  • Tipų saugumas: Kompiliatorius patikrina tipų suderinamumą kompiliacijos metu, užkertant kelią klaidoms vykdymo metu, susijusioms su netinkamais tipais.
  • Išraiškingesnis kodas: Aiškiau parodo kūrėjo ketinimus dėl duomenų tipų.

Pavyzdys Swift kalba:

Bendra Stack struktūra:

struct Stack<Element> {
    // bendras Element naudojamas kaip masyvo elementų tipas
    private var items: [Element] = []

    // bendras Element naudojamas kaip parametro tipas
    mutating func push(_ item: Element) {
        items.append(item)
    }

    // bendras Element naudojamas kaip grąžinamosios vertės tipas
    mutating func pop() -> Element {
        return items.removeLast()
    }
}

Naudojimas su eilutėmis:

var stringStack = Stack<String>()
stringStack.push("hello")
stringStack.push("world")
let lastString = stringStack.pop() // lastString turi tipą String

Naudojimas su skaičiais:

var intStack = Stack<Int>()
intStack.push(1)
intStack.push(2)
let lastInt = intStack.pop() // lastInt turi tipą Int

Be generikų reikėtų rašyti atskiras struktūras Stack<String>, Stack<Int> ir t. t., arba naudoti mažiau saugius metodus (pvz., Any).