Sobes.tech
Junior — Middle

Може ли директно да инстанцирате обект на протокол в езика за програмиране?

sobes.tech AI

Отговор от AI

В Swift (език за програмиране за iOS), протоколите описват набор от изисквания (методи, свойства), които трябва да изпълнява един тип. Не е възможно директно да се създаде екземпляр на протокол, тъй като самият протокол не съдържа реализация.

Въпреки това, ако има клас или структура, които реализират протокола, може да се създаде екземпляр от този тип и да се работи с него чрез препратка към протокола.

Пример:

protocol Drawable {
    func draw()
}

class Circle: Drawable {
    func draw() {
        print("Рисуваме кръг")
    }
}

let shape: Drawable = Circle() // създаваме екземпляр на класа, реализиращ протокола
shape.draw() // извикване на метода на протокола

Ако трябва да имате обект, който съответства на протокола, но не искате да създавате конкретен клас, можете да използвате обвиващи типове или анонимни реализации, но директното създаване на инстанция на протокола не е възможно.