In Swift, wie kann man eine Typologie erweitern?

9

Ich habe eine Typologie:

%Vor%

Ich möchte es erweitern, indem ich so etwas mache:

%Vor%

Aber das wirft einen Kompilierungsfehler auf:

  

Die eingeschränkte Erweiterung muss für den nicht spezialisierten generischen Typ 'Dictionary' mit Einschränkungen deklariert werden, die durch eine Where-Klausel

angegeben werden

Am Ende mache ich:

%Vor%

Gibt es einen saubereren Weg, dies zu tun?

    
guptron 18.11.2015, 03:34
quelle

1 Antwort

2

AFAIK, nein.

Betrachten Sie das folgende Beispiel:

%Vor%

Hier ist Height kein neuer Typ, es ist nur eine Bezeichnung für Float , also erweitern Sie einfach Float . Wenn Sie sich Dictionary ansehen, ist es public struct Dictionary<Key : Hashable, Value> : CollectionType, DictionaryLiteralConvertible , was Sie mit

erreichen möchten %Vor%

fügt eine Erweiterung zu Dictionary mit spezifischen generischen Parametern hinzu.

Was ich erwarten würde, dass Sie in der Lage sein sollten, ist:

%Vor%

Aber das kompiliert auch nicht, und das liegt daran, dass Sie in Swift keine Partialtypen typisieren können (dh generische Typen ohne spezifische generische Parametertypen. Siehe hier für weitere Informationen). Eine mögliche Problemumgehung für die Typisierung von generischen Typen, die unter der Antwort aufgeführt ist, die ich verknüpfte, ist

%Vor%

Aber selbst dann, wenn Sie versuchen, BeaconID zu erweitern, erhalten Sie eine Compiler-Warnung, die schließlich zum Kern des Problems führt:

"Constrained Extension muss auf dem unspezialisierten generischen Typ 'Dictionary' mit Einschränkungen deklariert werden, die durch eine Where-Klausel"

angegeben werden     
barndog 18.11.2015, 03:59
quelle

Tags und Links