[swift-evolution] Strings in Swift 4
Ole Begemann
ole at oleb.net
Fri Jan 20 08:02:40 CST 2017
>> extension Unicode {
>> // An example of the option language in declaration context,
>> // with nil defaults indicating unspecified, so defaults can be
>> // driven by the presence/absence of a specific Locale
>> func frobnicated(
>> case caseSensitivity: StringSensitivity? = nil,
>> diacritic diacriticSensitivity: StringSensitivity? = nil,
>> width widthSensitivity: StringSensitivity? = nil,
>> in locale: Locale? = nil
>> ) -> Self { ... }
>> }
>> ```
>
> Any reason why Locale is defaulted to nil, instead of currentLocale? It
> seems more useful to me.
The reason is given in the text above the code sample: "The defaults for
case-, diacritic-, and width-insensitivity are different for localized
operations than for non-localized operations, so for example a localized
sort should be case-insensitive by default, and a non-localized sort
should be case-sensitive by default."
So the API would need to distinguish between "current locale" and "no
locale" (i.e. use the non-localized algorithm).
> Will String also conform to SequenceType? I’ve seen many users (coming
> from other languages) confused that they can’t “just” loop over a
> String’s characters.
Collection refines Sequence, so all collections are sequences. This
would also be true for String. So yes, you could do `for char in string`
again.
More information about the swift-evolution
mailing list