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]
}
}
Инчунин, протоколҳо бо намудҳои вобаста роҳи амалӣ кардани интерфейсҳои умумӣ мебошанд, монанди генерикҳо.