2017-10-31 1 views
0

Warum können Sie keine generische Selbstreferenz in Swift 3.2/4 KeyPath-Typalias verwenden?Warum können Sie keine generische Selbstreferenz in Swift 3.2/4 KeyPath-Typalias verwenden?

Beispiel: Der unten stehende Code wird kompiliert, wenn Sie die Zeile // B nicht auskommentieren. Warum? Von dem, was ich begründen kann, sollte die Linie, die mit markiert ist, genau dieselbe Sache wie die Linie bedeuten, die // A wegen der Aussage typealias Path<T> = KeyPath<Self,T> markiert wird.

Fehle ich hier etwas, oder ist das ein Swift Compiler Bug?

Antwort

0

root, der Wert von keypath, in eckigen Klammern, ist erforderlich, um einen Schlüsselpfad zu deklarieren. Es ist, als würde man Array mit dem Typ Swift deklarieren. Dies sollte funktionieren:

var fooerPathB: F.Path<F, T> { get set } 
+0

Siehe das aktualisierte Codebeispiel oben. Irgendwie wurde das beim ersten Einfügen in die StackOverflow iOS App gelöscht. Aber ja, ich benutze F.Path das ist eine Typalias für KeyPath , so sollte es total funktionieren ... – CommaToast

+0

Es ist für mich in XCode9 kompilieren/Swift4 –

+0

Sie sagen, dass das aktualisierte Code-Beispiel, das ich zur Verfügung gestellt wird auf deinem XCode? – CommaToast

Verwandte Themen