Junior
Koje načelo programiranja omogućava korišćenje generika?
sobes.tech АИ
Одговор од АИ
Подтипови полиморфизам.
Генериците у 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"
Предности коришћења генераке:
- Безбедност типова: Компилатор проверава типове током компилације, смањујући вероватноћу грешака у току извршавања.
- Поновна употреба кода: Исту структуру кода можете користити за различите типове.
- Перформансе: Нема потребе за кастовањем типова у току извршавања.
- Абракција: Омогућавају апстракцију од конкретних типова података.