[swift-evolution] Strings in Swift 4

Dave Abrahams dabrahams at apple.com
Mon Jan 30 13:35:31 CST 2017

on Sun Jan 22 2017, James Froggatt <swift-evolution at swift.org> wrote:

> Could we add subscript labels to the list of options? While keeping
> the range syntax is appealing, I'm concerned it may cause confusion if
> the operators are used out of context.
> The wording is up for debate, but something like this should be a fair alternative:
> items[from: i]
> items[upTo: i]
> Sorry if this has been covered elsewhere (can't find the answer in
> this thread), but my first questions on discovering these operators
> (my source of confusion) would be what happens if I try the following:
> let partialRange = 0..< //is this an infinite range?

If we implemented that syntax, it would be.  The proposal is that
half-open ranges without an upper bound would be illegal, but

  let partialRange = 0...

is just such an infinite range, which is useful in its own right.  For
example, let's deprecate enumerated():

   for (i, e) in zip(0..., elements) {
     print("\(i): \(e)")

> let x = items[partialRange] //shouldn't this cause an out of bounds error?

Why should that be out-of-bounds?  Whether it is out-of-bounds would
depend on what items is.  If it's an array, that should be equivalent to

   let x = items[items.startIndex..<items.endIndex]


More information about the swift-evolution mailing list