Ich habe vor kurzem Protocols, Generic Type Constraints and Arrays in Swift gelesen. Meine Frage bezieht sich auf die folgenden zwei Beispiele aus dem Blog:Verhalten von Protokollen mit Selbst
Der Code:
protocol MyProtocol1 {
var myValue: Self { get }
}
let array: [MyProtocol1] = [] // Error.
Erzeugt den Fehler:
Protocol 'MyProtocol1' can only be used as a generic constraint because it has Self or associated type requirements.
Das erwartet wird, und es wurden mehrere SO Fragen gewesen über das Thema. Wenn Sie jedoch myValue
in eine Funktion ändern, tritt kein Fehler mehr auf. In beiden Fällen wird Self
zurückgegeben.
protocol MyProtocol2 {
func myValue() -> Self
}
let array: [MyProtocol2] = [] // This is okay.
Kennt jemand die Ursache für diese scheinbar seltsame Verhalten?
Ich empfehle, dies auf den devforums zu diskutieren. Ich vermute, dies ist ein Eckfall und möglicherweise nicht beabsichtigt. Die Swift-Entwickler geben eher eine definitive Antwort. –
Haben Sie schließlich eine Antwort auf dieses Verhalten gefunden? – bartzy