我有一個關於泛型集合進行動作的功能的緊化:斯威夫特泛型集合,其中約束
func foo<T: RangeReplaceableCollection>(_ bar: T)
where T.Iterator.Element == UInt8
{
//
}
函數然後訪問該集合的子範圍,所以它需要額外的約束:
func foo<T: RangeReplaceableCollection>(_ bar: T)
where T.Iterator.Element == UInt8,
T.SubSequence: RangeReplaceableCollection,
T.SubSequence.Iterator.Element == T.Iterator.Element
{
//
}
它也稱爲自己在集合子範圍的子範圍內操作的函數,因此它需要更多的約束:
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
{
//
}
有沒有什麼辦法可以清理?
難道至少有一種方法可以隱藏所有那些在
typealias
後面的子句嗎?如果不是,是否有解決此問題的提案?
爲什麼會出現'AnyRandomAccessCollection'但沒有'AnyRangeReplaceableCollection '?也將解決問題並擺脫所有條款。 –
Etan