webentwicklung-frage-antwort-db.com.de

Was bedeutet "Protokoll ... kann nur als allgemeine Einschränkung verwendet werden, da es Anforderungen für" Selbst "oder den zugehörigen Typ hat"?

Ich versuche ein Dictionary (eigentlich ein HashSet ) zu erstellen, das auf einem benutzerdefinierten Protokoll in Swift basiert, aber es gibt mir den Fehler im Titel:

Das Protokoll 'myProtocol' kann nur als generische Einschränkung verwendet werden, da es Self- oder zugehörige Typanforderungen hat

und ich kann weder Kopf noch Zahl daraus machen.

protocol Observing: Hashable { }

var observers = HashSet<Observing>()
115
devios1

Protokoll Observing erbt von Protokoll Hashable, das wiederum von Protokoll Equatable erbt. Das Protokoll Equatable hat die folgende Anforderung:

func ==(lhs: Self, rhs: Self) -> Bool

Und ein Protokoll, das irgendwo Self enthält, kann nur in einer Typeinschränkung verwendet werden.

Hier ist eine ähnliche Frage.

80
newacct

Um dies zu lösen, könnten Sie Generika verwenden. Betrachten Sie dieses Beispiel:

class GenericClass<T: Observing> {
   var observers = HashSet<T>()
}
8
ph1lb4