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