[swift-evolution] [Proposal] Safer half-open range operator

Luis Henrique B. Sousa lshsousa at gmail.com
Mon Apr 11 07:23:08 CDT 2016


This proposal seeks to provide a safer ..< (aka half-open range operator)
in order to avoid **Array index out of range** errors in execution time.

Here is my first draft for this proposal:
https://github.com/luish/swift-evolution/blob/half-open-range-operator/proposals/nnnn-safer-half-open-range-operator.md

In short, doing that in Swift causes a runtime error:

let a = [1,2,3]
let b = a[0..<5]
print(b)

> Error running code:
> fatal error: Array index out of range

The proposed solution is to slice the array returning all elements that are
below the half-open operator, even though the number of elements is lesser
than the ending of the half-open operator. So the example above would
return [1,2,3].
We can see this very behaviour in other languages, such as Python and Ruby
as shown in the proposal draft.

This would eliminate the need for verifications on the array size before
slicing it -- and consequently runtime errors in cases when the programmer
didn't.

Viewing that it is my very first proposal, any feedback will be helpful.
Thanks!

Luis Henrique Borges
@luishborges
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.swift.org/pipermail/swift-evolution/attachments/20160411/bbc710f8/attachment.html>


More information about the swift-evolution mailing list