<div dir="ltr"><div class="gmail_default"><font face="georgia, serif">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&#39;t change the </font><span style="font-family:georgia,serif">RangeReplaceableCollection to be a non-</span><span style="font-family:georgia,serif">RangeReplaceableCollection. So</span><font face="georgia, serif"> the empty collection must also be a </font><span style="font-family:georgia,serif">RangeReplaceableCollection. </span></div><div class="gmail_default"><span style="font-family:georgia,serif"><br></span></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex"><a class="" href="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" style="color:rgb(0,136,204);display:inline;line-height:1.4;max-width:100%;text-decoration:none;font-family:&#39;Myriad Set Pro&#39;,&#39;Helvetica Neue&#39;,Helvetica,Arial,sans-serif;font-size:16px"><code style="font-size:0.88889em;font-family:Menlo,monospace"><span class="" style="">init</span><span class="" style="color:rgb(102,102,102)">()<br></span></code></a>Creates a new, empty collection.</blockquote><div class="gmail_default"><span style="font-family:georgia,serif"><br></span></div><div class="gmail_default">Zhaoxin</div></div><div class="gmail_extra"><br><div class="gmail_quote">On Wed, Jul 6, 2016 at 9:09 PM, Tim Vermeulen <span dir="ltr">&lt;<a href="mailto:tvermeulen@me.com" target="_blank">tvermeulen@me.com</a>&gt;</span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">I’m not allowing generic subscripts. The collection is declared as `AnyIndexArray&lt;Index: Strideable, Element where Index.Stride == Int&gt;` and it can be subscripted with type `Index`.<br>
<br>
Either way, it’s not really important. I’m mostly wondering why RangeReplaceableCollection needs an empty initialiser.<br>
<br>
&gt; Then how you defined the index to conform toStrideable? Below code does work as it seams that you can&#39;t use generics in subscripts.<br>
<span class="">&gt;<br>
&gt;<br>
&gt; subscript&lt;T:Strideable&gt;(index:T) -&gt;Element<br>
&gt;<br>
&gt;<br>
&gt;<br>
&gt;<br>
&gt;<br>
&gt;<br>
&gt; Zhaoxin<br>
&gt;<br>
&gt;<br>
&gt;<br>
&gt;<br>
</span>&gt; On Wed, Jul 6, 2016 at 8:32 PM, Tim Vermeulen&lt;<a href="mailto:tvermeulen@me.com">tvermeulen@me.com</a>(mailto:<a href="mailto:tvermeulen@me.com">tvermeulen@me.com</a>)&gt;wrote:<br>
<span class="">&gt; &gt;<br>
&gt; &gt; &gt; On 6 Jul 2016, at 14:03, Zhao Xin&lt;<a href="mailto:owenzx@gmail.com">owenzx@gmail.com</a>(mailto:<a href="mailto:owenzx@gmail.com">owenzx@gmail.com</a>)&gt;wrote:<br>
&gt; &gt; &gt; According to the document of Swift 3, Array has already conformed protocolRangeReplaceableCollection.<br>
&gt; &gt;<br>
&gt; &gt; 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.<br>
&gt; &gt;<br>
&gt; &gt; &gt;<br>
&gt; &gt; &gt; Zhaoxin<br>
&gt; &gt; &gt;<br>
</span><span class="">&gt; &gt; &gt; On Wed, Jul 6, 2016 at 7:09 PM, Tim Vermeulen via swift-users&lt;<a href="mailto:swift-users@swift.org">swift-users@swift.org</a>(mailto:<a href="mailto:swift-users@swift.org">swift-users@swift.org</a>)&gt;wrote:<br>
&gt; &gt; &gt; &gt; 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.<br>
&gt; &gt; &gt; &gt;<br>
&gt; &gt; &gt; &gt; 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.<br>
&gt; &gt; &gt; &gt;<br>
&gt; &gt; &gt; &gt; Perhaps these initialisers should be moved to a (possible new) different protocol?<br>
&gt; &gt; &gt; &gt; _______________________________________________<br>
&gt; &gt; &gt; &gt; swift-users mailing list<br>
</span>&gt; &gt; &gt; &gt; <a href="mailto:swift-users@swift.org">swift-users@swift.org</a>(mailto:<a href="mailto:swift-users@swift.org">swift-users@swift.org</a>)<br>
&gt; &gt; &gt; &gt; <a href="https://lists.swift.org/mailman/listinfo/swift-users" rel="noreferrer" target="_blank">https://lists.swift.org/mailman/listinfo/swift-users</a><br>
&gt; &gt; &gt;<br>
&gt; &gt;<br>
&gt;<br>
&gt;<br>
&gt; </blockquote></div><br></div>