В новом Руководстве по разработке Swift API обычно используется суффикс Type
для протоколов. Хотя это легко сделать для автономных протоколов (SequenceType
становится Sequence
), я не уверен, как обновлять мои API, в которых протокол предоставляет базу для реализации. Вот несколько примеров из популярных фреймворков:
- Result μframework предоставляет
Result
, конкретную перечисление успеха/неудачи иResultType
, общий базовый протокол для типа успеха/сбоя, к которому соответствуетResult
. - ReactiveCocoa основные типы
Signal
иSignalProducer
, которые поддерживаютсяSignalType
иSignalProducerType
.
В обоих случаях большая часть реализации заключается в расширениях протоколов, позволяя расширениям использовать полную мощность ограничений типов и позволяя реализациям быть универсальными. Это отличается от протоколов с типом стирания типа AnySequence
: вы не должны сами реализовать эти протоколы или унифицировать разрозненные типы.