Sobes.tech
Junior

Какво са генериците в програмирането?

sobes.tech AI

Отговор от AI

Генериците (Generics) са начин за писане на гъвкав, многократно използваем код, който работи с всякакви типове данни, като същевременно запазва типовата безопасност. Те позволяват да отложите уточняването на конкретен тип до момента на използването.

Основните предимства:

  • Избягване на дублиране на код: Можете да напишете алгоритъм/структура от данни, която работи с различни типове.
  • Типова безопасност: Компилаторът проверява съвместимостта на типовете по време на компилация, предотвратявайки грешки по време на изпълнение, свързани с неправилни типове.
  • По-изразителен код: По-ясно показва намеренията на разработчика относно типовете данни.

Пример за използване в Swift:

Обобщена структура Stack:

struct Stack<Element> {
    // генеричен Element се използва като тип на елементите на масива
    private var items: [Element] = []

    // генеричен Element се използва като тип на параметъра
    mutating func push(_ item: Element) {
        items.append(item)
    }

    // генеричен Element се използва като тип на връщаната стойност
    mutating func pop() -> Element {
        return items.removeLast()
    }
}

Използване със стрингове:

var stringStack = Stack<String>()
stringStack.push("hello")
stringStack.push("world")
let lastString = stringStack.pop() // lastString е от тип String

Използване с числа:

var intStack = Stack<Int>()
intStack.push(1)
intStack.push(2)
let lastInt = intStack.pop() // lastInt е от тип Int

Без генерики, трябваше да се напишат отделни структури за Stack<String>, Stack<Int> и т.н., или да се използват по-малко безопасни подходи (например, Any).