Junior — Middle
Программалоо тилинде протокол объектисин түздөн-түз инстанцтай аласызбы?
sobes.tech AI
AIден жооп
Swift (iOS үчүн программалоо тили) протоколдор белгилүү бир талаптардын (методдор, мүнөздөмөлөр) топтомун сүрөттөйт, аны түрү ишке ашырышы керек. Протоколдун өзү түз эле мисалын түзүү мүмкүн эмес, анткени протокол эч кандай ишке ашырылышты камтыбайт.
Бирок, эгер протоколду ишке ашырат турган класс же структура болсо, анда ошол түрдүн мисалын түзүп, протоколго шилтеме аркылуу иштете аласыз.
Мисал:
protocol Drawable {
func draw()
}
class Circle: Drawable {
func draw() {
print("Чеңбер салуу")
}
}
let shape: Drawable = Circle() // протоколду ишке ашырат турган класс мисалын түзүү
shape.draw() // протоколдун методун чакыруу
Эгер сизге протоколго жооп берген объект керек болсо, бирок конкреттүү класс түзгүңүз келбесе, каптама түрлөрүн же анонимдик ишке ашырууларды колдонсоңуз болот, бирок протоколдун түз эле мисалын түзүү мүмкүн эмес.