Протоколы и расширения

Используйте слово protocol для объявления протокола.

Классы, перечисления и структуры могут соответствовать протоколам:

Напишите перечисление, которое будет отвечать этому протоколу

Обратите внимание на ключевое слово mutating, которое обозначает метод, модифицирующий структуру. Объявление класса не требует добавления слова mutating, т.к. методы класса всегда могут модифицировать класс.

Используйте слово extension (расширение) для добавления функциональности существующему типу, например новых методов или вычисленных свойств. Вы можете использовать расширение для добавления совместимости с протоколом типу, который объявлен в другом месте, или даже типу, который вы импортировали из библиотеки или фреймворка:

Напишите расширение для типа Double, которое добавляет свойство absoluteValue

Вы можете использовать имя протокола, как любой другой именованный тип — например, создать коллекцию объектов, которые имеют разные типы, но все соответствуют одному протоколу. Когда вы работаете со значениями, тип которых — протокол, методы вне объявления протокола недоступны.

Хотя переменная protocolValue будет иметь тип SimpleClass во время исполнения, компилятор работает с ней как с переменной типа ExampleProtocol — это значит, что вы не сможете случайно обратиться к методам или свойствам, которые класс реализует в дополнение к протоколу.


Просмотренно: 1 660 раз