Что означает" протокол ... может использоваться только в качестве общего ограничения, поскольку он имеет собственные или связанные требования к типу"?
Я пытаюсь создать словарь (на самом деле HashSet) набран на пользовательском протоколе в Swift, но это дает мне ошибку в названии:
протокол 'myProtocol' может использоваться только в качестве общего ограничения, поскольку он имеет собственные или связанные требования к типу
и я не могу сделать головы, ни хвоста.
protocol Observing: Hashable { }
var observers = HashSet<Observing>()
обновление:
для лучшего возможного объяснения, почему это так это проверьте это видео.
2 ответа:
протокол
Observing
наследует от протоколаHashable
, который в свою очередь наследуется из протоколаEquatable
. ПротоколEquatable
есть следующее требование:func ==(lhs: Self, rhs: Self) -> Bool
и протокол, который содержит
Self
где-то внутри он не может быть использован нигде, кроме как в ограничении типа.здесь на подобный вопрос.