[swift-users] Why does RangeReplaceableCollection require an empty initialiser?
Zhao Xin
owenzx at gmail.com
Wed Jul 6 09:33:11 CDT 2016
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 <tvermeulen at 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)>
> Creates a new, empty collection.
> >
> > Zhaoxin
> >
> > On Wed, Jul 6, 2016 at 9:09 PM, Tim Vermeulen<tvermeulen at me.com(mailto:
> tvermeulen at 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<tvermeulen at me.com
> (mailto:tvermeulen at me.com)(mailto:tvermeulen at me.com)>wrote:
> > > >>
> > > >>>On 6 Jul 2016, at 14:03, Zhao Xin<owenzx at gmail.com(mailto:
> owenzx at gmail.com)(mailto:owenzx at 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 at swift.org(mailto:swift-users at swift.org)(mailto:
> swift-users at 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 at swift.org(mailto:swift-users at swift.org)(mailto:
> swift-users at swift.org)
> > > >>>>https://lists.swift.org/mailman/listinfo/swift-users
> > > >>>
> > > >>
> > > >
> > > >
> > > >
> >
> >
> >
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.swift.org/pipermail/swift-users/attachments/20160706/fc88d6ff/attachment.html>
More information about the swift-users
mailing list