Sobes.tech
Junior

Кой принцип на програмиране позволява използването на генерични типове?

sobes.tech AI

Отговор от AI

Полиморфизъм на подтипове.

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

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

// Дефиниция на генерична функция, която приема два параметъра от един и същи тип T,
// където типът T трябва да отговаря на протокола Equatable.
func areEqual<T: Equatable>(_ a: T, _ b: T) -> Bool {
    return a == b
}

// Използване на генерична функция с Int
let intResult = areEqual(5, 5) // true

// Използване на генерична функция с String
let stringResult = areEqual("hello", "world") // false

Пример за генерична структура (стек):

// Дефиниция на генерична структура "Stack", която може да съхранява елементи от всякакъв тип T.
struct Stack<T> {
    private var elements: [T] = []

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

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

// Използване на генерична структура с Int
var intStack = Stack<Int>()
intStack.push(1)
intStack.push(2)
let poppedInt = intStack.pop() // 2

// Използване на генерична структура с String
var stringStack = Stack<String>()
stringStack.push("A")
stringStack.push("B")
let poppedString = stringStack.pop() // "B"

Предимства на използването на генерики:

  • Сигурност на типовете: Компилаторът проверява типовете по време на компилация, намалявайки вероятността от грешки по време на изпълнение.
  • Повторна употреба на код: Един и същ код може да работи с различни типове.
  • Производителност: Не е необходима преобразуване на типове по време на изпълнение.
  • Абстракция: Позволяват абстракция от конкретни типове данни.