You wouldn’t need an empty initialiser to remove all elements from a collection, right? You could just use `replaceRange` instead.
> 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 > theRangeReplaceableCollection to be a non-RangeReplaceableCollection. Sothe > empty collection must also be aRangeReplaceableCollection. > > > 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(mailto: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)(mailto:tvermeu...@me.com)>wrote: > > >> > > >>>On 6 Jul 2016, at 14:03, Zhao > > >>>Xin<owe...@gmail.com(mailto: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)(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)(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