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"
Предимства на използването на генерики:
- Сигурност на типовете: Компилаторът проверява типовете по време на компилация, намалявайки вероятността от грешки по време на изпълнение.
- Повторна употреба на код: Един и същ код може да работи с различни типове.
- Производителност: Не е необходима преобразуване на типове по време на изпълнение.
- Абстракция: Позволяват абстракция от конкретни типове данни.