Sobes.tech
Junior

Kura programmēšanas principi ļauj izmantot ģenerikus?

sobes.tech AI

Atbilde no AI

Polimorfisms pēc iedalījuma.

Swift ģenerikumi īsteno parametrisko polimorfismu, ļaujot rakstīt kodu, kas var darboties ar dažādiem tipiem, nezinot tos iepriekš, bet prasot, lai šie tipi atbilst noteiktiem ierobežojumiem (piemēram, protokoliem).

Ģeneriku lietošanas piemērs:

// Ģenerik funkcijas definīcija, kas pieņem divus parametrus vienā tipā T,
// kuram jāatbilst Equatable protokolam.
func areEqual<T: Equatable>(_ a: T, _ b: T) -> Bool {
    return a == b
}

// Lietošana ar Int
let intResult = areEqual(5, 5) // true

// Lietošana ar String
let stringResult = areEqual("hello", "world") // false

Ģenerikstruktūras piemērs (masīvs):

// Ģenerikstruktūras "Stack" definīcija, kas var glabāt jebkura tipa T elementus.
struct Stack<T> {
    private var elements: [T] = []

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

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

// Lietošana ar Int
var intStack = Stack<Int>()
intStack.push(1)
intStack.push(2)
let poppedInt = intStack.pop() // 2

// Lietošana ar String
var stringStack = Stack<String>()
stringStack.push("A")
stringStack.push("B")
let poppedString = stringStack.pop() // "B"

Ģeneriku priekšrocības:

  • Tipu drošība: Kompilators pārbauda tipus laikā, samazinot kļūdu iespējamību runtime.
  • Koda atkārtojamība: Viena un tā pati koda daļa var darboties ar dažādiem tipiem.
  • Veiktspēja: Nav nepieciešams veikt tipu pārvēršanu (type casting) izpildes laikā.
  • Abstrakcija: ļauj abstrahēties no konkrētiem datu tipiem.