Back in Swift 1.0, subscripting a String was easy, you could just use 
subscripting in a very Python like way. But now, things are a bit more 
complicated. I recognize why we need syntax like str.startIndex.advancedBy(x) 
but it has its downsides. Namely, it makes things hard on beginners. If one of 
Swift's goals is to make it a great first language, this syntax fights that. 
Imagine having to explain Unicode and character size to an 8 year old. This is 
doubly problematic because String manipulation is one of the first things new 
coders might want to do. 

What about having an InternalString subclass that only supports one encoding, 
allowing it to be subscripted with Ints? The idea is that an InternalString is 
for Strings that are more or less hard coded into the app. Dictionary keys, 
enum raw values, that kind of stuff. This also has the added benefit of forcing 
the programmer to think about what the String is being used for. Is it user 
facing? Or is it just for internal use? And of course, it makes code dealing 
with String manipulation much more concise and readable.

It follows that something like this would need to be entered as a literal to 
make it as easy as using String. One way would be to make all String literals 
InternalStrings, but that sounds far too drastic. Maybe appending an 
exclamation point like "this"! Or even just wrapping the whole thing in 
exclamation marks like !"this"! Of course, we could go old school and write it 
like @"this" …That last one is a joke.

I'll be the first to admit I'm way in over my head here, so I'm very open to 
suggestions and criticism. Thanks!

Sent from my iPad
_______________________________________________
swift-evolution mailing list
swift-evolution@swift.org
https://lists.swift.org/mailman/listinfo/swift-evolution

Reply via email to