[swift-evolution] Pitch: String Index Overhaul
Dave Abrahams
dabrahams at apple.com
Tue May 30 16:48:46 CDT 2017
on Tue May 30 2017, Michael Ilseman <milseman-AT-apple.com> wrote:
>> On May 27, 2017, at 10:40 AM, Dave Abrahams via swift-evolution <swift-evolution at swift.org> wrote:
>>
>>
>> An index that does not fall on an exact boundary in a given `String`
>> or `Substring` view will be “rounded down” to the nearest boundary
>> when used for slicing or range replacement. So, for example,
>>
>
> What about normal subscript? I.e. what would the following print?
>
> print(s[s.unicodeScalars.indices.dropFirst().first!]) // “é”, or just
> the combining scalar?
I am proposing that it would be “é”
>
>
> Would unifying under the same type require that indices be less
> stateful than they currently are?
No; it's just a matter of unifying the states (in an enum). You can
look at the implementation in https://github.com/apple/swift/pull/9806
for details.
>
>> ```swift
>> let s = "e\u{301}galite\u{301}" // "égalité"
>> print(s[s.unicodeScalars.indices.dropFirst().first!...]) // “égalité"
>> print(s[..<s.unicodeScalars.indices.last!]) // "égalit"
>> ```
--
-Dave
More information about the swift-evolution
mailing list