<html><head><meta http-equiv="Content-Type" content="text/html charset=utf-8"></head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;" class=""><br class=""><div><blockquote type="cite" class=""><div class="">On Jun 30, 2017, at 10:51 PM, Taylor Swift &lt;<a href="mailto:kelvin13ma@gmail.com" class="">kelvin13ma@gmail.com</a>&gt; wrote:</div><br class="Apple-interchange-newline"><div class=""><div dir="ltr" class="">&nbsp;Perusing all the types and free functions in alphabetical order is so much easier than trying to guess what “topic” something is sorted under.<br class=""></div></div></blockquote><div><br class=""></div><div>I’ve read that the above sentence three times, and I honestly can’t tell if you’re being sarcastic or not!</div><div><br class=""></div><div>I find the long web page version of the docs tedious to read. &nbsp;I use Dash (if you have never tried it, I highly recommend it — seldom do I call any tool indispensable, but dash and launchbar are on my very very short list of tools i cannot live without) and it gives me such a nice compact view of the methods in a sidebar, i can pretty easily find anything.</div><div><br class=""></div><div>I thought about what someone posted, and almost replied last night, but didn’t because this is a topic where people can become so entrenched and dogmatic. &nbsp;But after some more thought:</div><div><br class=""></div><div><blockquote type="cite" class=""><div class="">Or, in Swift 4:</div><div class=""><br class=""></div><div class=""><span class="Apple-tab-span" style="white-space: pre;">        </span>let shortID = String(longerDeviceID[longerDeviceID.index(longerDeviceID.endIndex, offsetBy: -2)…])</div></blockquote><br class=""></div><div>My reply being: in Python, i’m expressing exactly the same concept, but in a very short form:</div><div><span class="Apple-tab-span" style="white-space:pre">        </span>longerDeviceID[-2:]<span class="Apple-tab-span" style="white-space:pre">        </span># which reads to me, start 2 before the end, and go to the end.</div><div><br class=""></div><div>which is exactly what String(longerDeviceID[longerDeviceID.index(longerDeviceID.endIndex, offsetBy: -2)…]) does.</div><div>The problem with this though is that there are THREE mentions of longerDeviceID. &nbsp;So in Python i might write</div><div><br class=""></div><div><span class="Apple-tab-span" style="white-space:pre">        </span>getLongerDeviceID()[-2:]</div><div><br class=""></div><div>but in Swift 4 i cannot easily inline this. &nbsp;Or can I? &nbsp;Is there a way of writing something looks like</div><div><br class=""></div><div><span class="Apple-tab-span" style="white-space:pre">        </span>getLongergDeviceId()[&lt;-2 from end&gt; ... ]</div><div><br class=""></div><div>where whatever goes in the &lt;-2 from the end&gt; does NOT refer to getLongerDeviceID()? &nbsp;I.e. I want to talk about -2 from the end as a concept without needing to refer to the specific string I’m talking about. &nbsp;If i could generate an index concept without referring to the string itself in anyway, i’d be happy. &nbsp;it’d be wonderful if i could express “-2 in whatever you feel like is the natural unit for the string you’re operating on.”</div><div><br class=""></div><div>Does the new API permit me to do that? &nbsp;If not, can I add my own subscript functions which take a new type, and i’ll invent the concept of “index in natural unit of the string being operated on.”</div><div><br class=""></div><div>thanks.</div><div><br class=""></div><div><br class=""></div><div><br class=""></div><div><br class=""></div><div><br class=""></div></div><div><br class=""><blockquote type="cite" class=""><div class=""><div class="gmail_extra"><br class=""><div class="gmail_quote">On Sat, Jul 1, 2017 at 12:54 AM, David Baraff <span dir="ltr" class="">&lt;<a href="mailto:davidbaraff@gmail.com" target="_blank" class="">davidbaraff@gmail.com</a>&gt;</span> wrote:<br class=""><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div style="word-wrap:break-word" class=""><br class=""><div class=""><span class=""><blockquote type="cite" class=""><div class="">On Jun 30, 2017, at 9:48 PM, Taylor Swift via swift-users &lt;<a href="mailto:swift-users@swift.org" target="_blank" class="">swift-users@swift.org</a>&gt; wrote:</div><br class="m_178362936365510373Apple-interchange-newline"><div class=""><div dir="ltr" class=""><br class=""><div class="gmail_extra"><div class="gmail_quote"><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div style="word-wrap:break-word" class=""><span class=""></span>Swift's strings were very deliberately designed this way. It's tougher to get off the ground, sure, but it's better in the long run.<span class="m_178362936365510373HOEnZb"></span></div>
<br class=""></blockquote></div><br class=""></div><div class="gmail_extra">It probably is, but the correct idiom is not very well known, and sadly most tutorials and unofficial guides are still teaching dumb ways of subscripting into strings (or worse, falling back into NSString methods without mentioning so) so the end result is people writing less performant code rather than more performant code.<br class=""></div></div></div></blockquote><div class=""><br class=""></div></span>An efficient solution doesn’t help if even experienced programmers can’t easily arrive at it. &nbsp;(I’m highly experienced, but I’ll admit I only put in about 5 minutes before I posted that. &nbsp;on the other hand, it shouldn’t take 5 minutes to figure out something that simple with strings. &nbsp;still, maybe i would have done the simple “suffix()” thing had i been looking at the actual swift 4 api’s, but i only had swift 3 api’s in front of me.)</div><span class=""><div class=""><br class=""><blockquote type="cite" class=""><div class="">
______________________________<wbr class="">_________________<br class="">swift-users mailing list<br class=""><a href="mailto:swift-users@swift.org" target="_blank" class="">swift-users@swift.org</a><br class=""><a href="https://lists.swift.org/mailman/listinfo/swift-users" target="_blank" class="">https://lists.swift.org/<wbr class="">mailman/listinfo/swift-users</a><br class=""></div></blockquote></div><br class=""></span></div></blockquote></div><br class=""></div>
</div></blockquote></div><br class=""></body></html>