Sobes.tech
Junior — Middle

Оё имкон дорад, ки протокол бо истифода аз генераҳо дар забони барномасозӣ амалӣ карда шавад?

sobes.tech AI

Ҷавоб аз AI

Дар Swift, шумо метавонед генерикҳоро бо протоколҳо истифода баред, аммо протоколҳо худ гениерик нестанд. Ба ҷои ин, шумо метавонед протоколҳоро бо намудҳои вобаста (associated types) эҷод кунед, ки имкон медиҳад талаботи умумиро муайян кунед. Ин имкон медиҳад, ки интерфейсҳои чандир ва бехатари намудро амалӣ кунед.

Масали протокол бо намудҳои вобаста:

protocol Container {
    associatedtype Item
    func append(_ item: Item)
    var count: Int { get }
    subscript(i: Int) -> Item { get }
}

struct IntStack: Container {
    var items = [Int]()
    mutating func append(_ item: Int) {
        items.append(_ item)
    }
    var count: Int {
        return items.count
    }
    subscript(i: Int) -> Int {
        return items[i]
    }
}

Инчунин, протоколҳо бо намудҳои вобаста роҳи амалӣ кардани интерфейсҳои умумӣ мебошанд, монанди генерикҳо.