Sobes.tech
Junior

Qaysi dasturlash prinsipi generiklardan foydalanishga imkon beradi?

sobes.tech AI

AIdan javob

Subtiplarning polimorfizmi.

Swiftdagi generiklar parametrli polimorfizmni amalga oshiradi, bu esa kodni oldindan bilmasdan turli xil turlarda ishlash imkonini beradi, lekin bu turlar ma'lum cheklovlarga (masalan, protokollarga) mos kelishini talab qiladi.

Generiklardan foydalanish misoli:

// Bir xil tur T ni qabul qiladigan va T protokolga mos kelishi kerak bo'lgan generik funktsiya ta'rifi.
func areEqual<T: Equatable>(_ a: T, _ b: T) -> Bool {
    return a == b
}

// Int bilan generik funktsiya ishlatilishi
let intResult = areEqual(5, 5) // true

// String bilan generik funktsiya ishlatilishi
let stringResult = areEqual("hello", "world") // false

Generik-struktura (stack) misoli:

// Har qanday tur T elementlarini saqlay oladigan "Stack" nomli generik struktura ta'rifi.
struct Stack<T> {
    private var elements: [T] = []

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

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

// Int bilan generik struktura ishlatilishi
var intStack = Stack<Int>()
intStack.push(1)
intStack.push(2)
let poppedInt = intStack.pop() // 2

// String bilan generik struktura ishlatilishi
var stringStack = Stack<String>()
stringStack.push("A")
stringStack.push("B")
let poppedString = stringStack.pop() // "B"

Generiklardan foydalanishning afzalliklari:

  • Turlar xavfsizligi: Kompilyator turlarni tekshiradi, bu esa ish vaqtida xatoliklar ehtimolini kamaytiradi.
  • Kodni qayta ishlatish: Bir xil kod turli turlarda ishlashi mumkin.
  • Performans: Turlarni o'zgartirishga ehtiyoj yo'q.
  • Abstraktsiya: Maxsus ma'lumot turlaridan ajralib chiqishga imkon beradi.