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

Reply via email to