In Swift, gibt es eine Möglichkeit, einen Typ von "Sets einer bestimmten Größe?" (Trotz der Abwesenheit von abhängigen Typen in Swift, ist eine solche Konstruktion dennoch möglich ohne übermäßiges „Verdrehungen?“)Sets einer bestimmten Größe als Swift-Typ
Als Beispiel würde Ich mag einen parametrisierte Typen definieren können, der Instanzen SetOfSizeTwo<T>
sind Sätze, bestehend aus genau zwei Objekten (Hashable
) Typ T
.
Derzeit verwende ich ein armer Proxy des Mannes:
struct SetOfSizeTwo<T> where T: Hashable {
var set = Set<T>(minimumCapacity: 2)
}
Allerdings ist diese Art die Eigenschaft nicht zwingen set
von 2.
aktualisieren
Die Größe zu sein Blog-Artikel A hack for fixed-size arrays in Swift, von Ole Begemann, lässt mich glauben, dass eine robuste Konstruktion eines Fixed-Size-Set-Typs in Swift 4, wenn überhaupt möglich, nicht trivial ist.
Ich denke, Ihre beste Wette eine Wrapper-Klasse zu erstellen, ist mit Benutzerdefinierte Methoden zum Hinzufügen und Entfernen Und haben Sie die zugrunde liegende Datenstruktur privat, damit niemand damit basteln kann. – Michal
@Michal Danke für Ihren praktischen Vorschlag. Im Grunde möchte ich die Set-Größe als Kompilierzeitbeschränkung erzwingen, idealerweise mit einem Typ. Aber ich vermute, dass das ohne Sprachunterstützung für abhängige Typen unmöglich ist. – egnha