I never said a RangeReplaceableCollection shouldn’t be empty. I just think it’s 
strange that it requires an empty initialiser (while the Collection protocol 
doesn’t).

> On 6 Jul 2016, at 16:33, Zhao Xin <owe...@gmail.com> wrote:
> 
> N​o. You didn't catch what I meant. I meant it should be like an equation. 
> ​If foo is a ​RangeReplaceableCollection,​ foo minus foo equates zero, zero 
> means an empty collection. Both side of the equation should be with the same 
> unit, the unit is RangeReplaceableCollection.​ Below code also shows init() 
> is useful in RangeReplaceableCollection.​​
> 
> var foo = Array<Int>()
> foo.append(contentsOf: [2,4,6,8])
> 
> ​Zhaoxin
> 
> On Wed, Jul 6, 2016 at 10:07 PM, Tim Vermeulen <tvermeu...@me.com 
> <mailto:tvermeu...@me.com>> wrote:
> 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
> >  
> > <http://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>(mailto: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 
> > > ><mailto: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 
> > > >>><mailto: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 
> > > >>><mailto: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 
> > > >>>><mailto:swift-users@swift.org>)(mailto:swift-users@swift.org 
> > > >>>><mailto:swift-users@swift.org>)
> > > >>>>https://lists.swift.org/mailman/listinfo/swift-users 
> > > >>>><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