Pull to refresh

Comments 5

Очень радует, что в отличие от obj-c в Swift можно в расширении класса MyViewController указать новые наследуемые протоколы и реализовать их поведение.

Учитывая, что эти расширения, суть, симбиоз протоколов и категорий, все это в obj-c можно делать. Протоколы наследуют протоколы. Категории наследуют и реализуют протоколы.
Выглядит забавно и любопытно, но, честно, никогда не сталкивался с необходимостью расширений, которые не привязаны к какому-то типу. Больше похоже на синтаксический сахар для helper-функций и методов. Называть это прям какой-то новой парадигмой protocol-oriented язык не поворачивается
В obj-c не сделаешь миксинов, как вы и описали — протоколов не привязанных к типу.

Зачем они могут быть нужны?
Самый явный пример — уточнение дженериков.
Если не вдаваться в библиотеки (мы, например, очень любим писать расширения к generic сущности SignalProducer из ReactiveCocoa) — то в коде встречались расширения на Optional на конкретные типы.
Пример — единообразный анврап Optional объекта (замена конструкции value = optional ?? fallbackValue на какую-то единообразную optional.unwrap, которая предпочтительнее, чем unwrap(optional)). Для того чтобы его написать — нужно уметь строить fallbackValue — что можно сделать только для какого-то набора типов.
Я дико извиняюсь, но всё же рискну спросить: а что в данном контексте есть протокол?
Может быть это как интерфейс из ООП.
Собственно без контекстов, протоколом считаю протокол, как его описывает Apple:
A protocol defines a blueprint of methods, properties, and other requirements that suit a particular task or piece of functionality. The protocol can then be adopted by a class, structure, or enumeration to provide an actual implementation of those requirements. Any type that satisfies the requirements of a protocol is said to conform to that protocol.

Но в принципе его можно рассматривать как некоторый миксин, так как по факту (как показано в статье, например, в примере 2) можно «вливать» новых функционал в существующий класс и делать это неоднократно.
Sign up to leave a comment.

Articles