Now I understood you concerns. Have you ever thought of if a non-empty RangeReplaceableCollection being removed all of its elements, which makes the collection to be an empty collection. That shouldn't change the RangeReplaceableCollection to be a non-RangeReplaceableCollection. So the empty collection must also be a RangeReplaceableCollection.
init() > > <file:///Users/zhaoxin/Library/Application%20Support/Dash/DocSets/Apple_API_Reference/Apple_API_Reference.docset/Contents/Resources/Documents/developer.apple.com/reference/swift/rangereplaceablecollection/1641467-init.html>Creates > a new, empty collection. Zhaoxin On Wed, Jul 6, 2016 at 9:09 PM, Tim Vermeulen <tvermeu...@me.com> wrote: > I’m not allowing generic subscripts. The collection is declared as > `AnyIndexArray<Index: Strideable, Element where Index.Stride == Int>` and > it can be subscripted with type `Index`. > > Either way, it’s not really important. I’m mostly wondering why > RangeReplaceableCollection needs an empty initialiser. > > > Then how you defined the index to conform toStrideable? Below code does > work as it seams that you can't use generics in subscripts. > > > > > > subscript<T:Strideable>(index:T) ->Element > > > > > > > > > > > > > > Zhaoxin > > > > > > > > > > On Wed, Jul 6, 2016 at 8:32 PM, Tim Vermeulen<tvermeu...@me.com(mailto: > tvermeu...@me.com)>wrote: > > > > > > > On 6 Jul 2016, at 14:03, Zhao Xin<owe...@gmail.com(mailto: > owe...@gmail.com)>wrote: > > > > According to the document of Swift 3, Array has already conformed > protocolRangeReplaceableCollection. > > > > > > That’s exactly why I also want to conform my wrapper to that protocol? > I think there’s a misunderstanding. I’m making a collection that can be > subscripted with any index (that conforms to Strideable), but behaves like > an array otherwise. > > > > > > > > > > > Zhaoxin > > > > > > > > On Wed, Jul 6, 2016 at 7:09 PM, Tim Vermeulen via swift-users< > swift-users@swift.org(mailto:swift-users@swift.org)>wrote: > > > > > RangeReplaceableCollection has three initialisers: init(), > init(_:) and init(repeating:count:). The latter two are implemented using > the empty initialiser. But why are these initialisers part of this > particular protocol? As far as I can tell, no other methods of this > protocol depend on these initialisers. The requirement of the empty > initialiser makes it impossible to have a collection conform to this > protocol that needs additional data for its initialisation. > > > > > > > > > > For instance, I was making an array that works with any Strideable > indices, not just integers. A startIndex is needed for its initialisation, > so I can’t really conform it to RangeReplaceableCollection. If I do it > anyways (with a fatalError() in the required empty initialiser) everything > seems to work just fine, except for the protocol’s three initialisers. > > > > > > > > > > Perhaps these initialisers should be moved to a (possible new) > different protocol? > > > > > _______________________________________________ > > > > > swift-users mailing list > > > > > swift-users@swift.org(mailto:swift-users@swift.org) > > > > > https://lists.swift.org/mailman/listinfo/swift-users > > > > > > > > > > > > >
_______________________________________________ swift-users mailing list swift-users@swift.org https://lists.swift.org/mailman/listinfo/swift-users