ich eine Funktion haben, die auf generische Sammlungen betreibt:Kompaktifizierung von Swift Allgemein Sammlung wo Einschränkung
func foo<T: RangeReplaceableCollection>(_ bar: T)
where T.Iterator.Element == UInt8
{
//
}
Die Funktion greift dann auf Teilbereiche dieser Sammlung, so braucht es zusätzliche Einschränkungen:
func foo<T: RangeReplaceableCollection>(_ bar: T)
where T.Iterator.Element == UInt8,
T.SubSequence: RangeReplaceableCollection,
T.SubSequence.Iterator.Element == T.Iterator.Element
{
//
}
Es ruft auch Funktionen auf, die selbst auf Unterbereichen der Unterbereiche der Sammlung arbeiten, so dass es noch mehr Einschränkungen benötigt:
func foo<T: RangeReplaceableCollection>(_ bar: T)
where T.Iterator.Element == UInt8,
T.SubSequence: RangeReplaceableCollection,
T.SubSequence.Iterator.Element == T.Iterator.Element,
T.SubSequence.SubSequence: RangeReplaceableCollection,
T.SubSequence.SubSequence.Iterator.Element ==
T.SubSequence.Iterator.Element
{
//
}
Gibt es eine Möglichkeit, wie dies gereinigt werden kann?
Gibt es zumindest eine Möglichkeit, all die Where-Klauseln hinter einer
typealias
zu verstecken?Wenn nicht, gibt es einen Vorschlag, der dieses Problem anspricht?
Warum gibt es 'AnyRandomAccessCollection' aber keine 'AnyRangeReplaceableCollection '? Würde auch das Problem lösen und alle Klauseln loswerden. –
Etan