Sobes.tech
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"

Предности коришћења генераке:

  • Безбедност типова: Компилатор проверава типове током компилације, смањујући вероватноћу грешака у току извршавања.
  • Поновна употреба кода: Исту структуру кода можете користити за различите типове.
  • Перформансе: Нема потребе за кастовањем типова у току извршавања.
  • Абракција: Омогућавају апстракцију од конкретних типова података.