> On 8 Jun 2017, at 14:11, Xiaodi Wu <[email protected]> wrote:
> 
> At some point–although it’s unclear if it’s still the case after the recent 
> String revisions–it was the case that Foundation extended String to allow 
> integer subscripting of UTF16View.
> 
> The issue with offering it generally is that it doesn’t reliably serve any 
> use case. You’re using it for performance, which works currently because the 
> underlying storage is UTF16-encoded, but this is explicitly _not_ guaranteed 
> to remain the case going forward, and then your performance would be impacted.
> 
> If I recall, the core team has said that the only guarantee of the 
> performance you’re looking for is to store the string yourself as a sequence 
> of bytes (using Data, for example). The argument is that, in your barcode 
> example, you’re not really manipulating it as a string at all, but are 
> relying on its being a particular sequence of bytes. As it happens, when this 
> topic has come up previously, it has also been the case that the use case 
> presented treated the string as a known sequence of bytes.

I understand what you are saying. It's just a pitty that it's making the code 
much more complicated than it should be.

> On Thu, Jun 8, 2017 at 16:26 David Hart via swift-evolution 
> <[email protected]> wrote:
>>> On 8 Jun 2017, at 12:35, Tony Allevato <[email protected]> wrote:
>>> 
>>> It is an extremely rare case for a developer to know a priori what literal 
>>> numeric indices should be used when indexing into a string, because it only 
>>> applies when strings fall into a very specific format and encoding.
>>> 
>>> It's been discussed before during String-related proposals but AFAIK the 
>>> core team has come out against it—it would be an invitation for users who 
>>> don't understand the distinction to do very unsafe and wrong things with 
>>> strings. IMO, writing your own extension or using index.offset(by:) isn't a 
>>> huge penalty here.
>> 
>> Is it really an invitation when it’s hidden inside the UTF16View?
>> 
>>>> On Thu, Jun 8, 2017 at 10:32 AM David Hart via swift-evolution 
>>>> <[email protected]> wrote:
>>>> Hello,
>>>> 
>>>> When working with Strings which are known to be ASCII, I tend to use the 
>>>> UTF16View for the performance of random access. I would also like to have 
>>>> the convenience of indexing with Int:
>>>> 
>>>> let barcode = "M1XXXXXXXXX/CLEMENT   EELT9QBQGVAAMSEZY1353 244 21D 531  
>>>> 10A1311446838”
>>>> let name = barcode.utf16[2..<22]
>>>> let pnrCode = barcode.utf16[23..<30]
>>>> let seatNo = barcode.utf16[47..<51]
>>>> let fromCity = barcode.utf16[30..<33]
>>>> let toCity = barcode.utf16[33..<36]
>>>> let carrier = barcode.utf16[36..<39]
>>>> let flightNumber = barcode.utf16[39..<44]
>>>> let day = barcode.utf16[44..<47]
>>>> 
>>>> I define my own subscript in an extension to UTF16View but I think this 
>>>> should go in the Standard Library.
>>>> Any thoughts?
>>>> 
>>>> David.
>>>> _______________________________________________
>>>> swift-evolution mailing list
>>>> [email protected]
>>>> https://lists.swift.org/mailman/listinfo/swift-evolution
>> _______________________________________________
>> swift-evolution mailing list
>> [email protected]
>> https://lists.swift.org/mailman/listinfo/swift-evolution
_______________________________________________
swift-evolution mailing list
[email protected]
https://lists.swift.org/mailman/listinfo/swift-evolution

Reply via email to