Swift - Различия между наследованием протокола и ограничением Self протоколом - PullRequest
0 голосов
/ 07 сентября 2018

У меня есть протокол A:

protocol A { }

Чем отличаются реализации протокола B, например:

protocol B: A { }

по сравнению с его реализацией следующим образом:

protocol B where Self: A { }

Что я могу сделать с одним, что я не могу сделать с другим? Где я столкнусь с проблемой, которую можно исправить, переключив ее на другую?

1 Ответ

0 голосов
/ 07 сентября 2018

Разница лишь в том, как вы соблюдаете протокол.

В первом случае соответствие B подразумевает соответствие A.

struct BImpl: B {} // `A` is implied here

В последнем случае соответствие B требует соответствия A, но неявно создает его:

struct BImpl: A, B {} // `A` is explicitly required here
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...