Sobes.tech
Junior

Jaký princip programování umožňuje používat generika?

sobes.tech AI

Odpověď od AI

Podtypová polymorfismus.

Generika v Swiftu implementují parametrický polymorfismus, který umožňuje psát kód, jenž může pracovat s různými typy bez jejich předchozí znalosti, ale vyžaduje, aby tyto typy splňovaly určité omezení (například protokoly).

Příklad použití generik:

// Definice generické funkce, která přijímá dva parametry stejného typu T,
// kde typ T musí splňovat protokol Equatable.
func areEqual<T: Equatable>(_ a: T, _ b: T) -> Bool {
    return a == b
}

// Použití generické funkce s typem Int
let intResult = areEqual(5, 5) // true

// Použití generické funkce s typem String
let stringResult = areEqual("hello", "world") // false

Příklad generické struktury (zásobník):

// Definice generické struktury "Stack", která může uchovávat prvky libovolného typu T.
struct Stack<T> {
    private var elements: [T] = []

    mutating func push(_ element: T) {
        elements.append(element)
    }

    mutating func pop() -> T? {
        return elements.popLast()
    }
}

// Použití generické struktury s typem Int
var intStack = Stack<Int>()
intStack.push(1)
intStack.push(2)
let poppedInt = intStack.pop() // 2

// Použití generické struktury s typem String
var stringStack = Stack<String>()
stringStack.push("A")
stringStack.push("B")
let poppedString = stringStack.pop() // "B"

Výhody použití generik:

  • Typová bezpečnost: Kompilátor kontroluje typy během kompilace, snižuje pravděpodobnost chyb za běhu.
  • Opětovné použití kódu: Stejný kód může pracovat s různými typy.
  • Výkon: Není potřeba přiřazování typu za běhu.
  • Abstrakce: Umožňují abstrakci od konkrétních datových typů.