I think most people would agree with “its a Not a Great Idea (™)”.

The root argument is “out-of-bounds array access is a logic error”.

> On 13.04.2017, at 16:54, David Sweeris via swift-evolution 
> <[email protected]> wrote:
> 
> 
> 
> 
> Sent from my iPhone
> On Apr 13, 2017, at 07:34, Jeff Kelley <[email protected]> wrote:
> 
>> Apologies if this has been suggested before, but going off of Andrew’s 
>> message, a simple syntax could be to use our existing Optional syntax:
>> 
>> let array = ["foo", "bar", "baz"]
>> 
>> let first = array[0] // type is `String`
>> let third = array[2?] // type is `String?`, value is .some("baz")
>> let fourth = array[3?] // type is `String?`, value is .none
> 
> That was my thought, too, but it's not valid Swift. I tried it in a 
> playground before I sent my reply. At least in Xcode 8.3.1, it gives an error 
> about ambiguous calls (it can't decide if you're trying to call the stdlib 
> subscript or the `(_: Index?) -> Element?` one from the extension), and if 
> you fix that by adding an argument label, the real issue is revealed which is 
> that saying "x?" doesn't return "x wrapped in an optional"; it thinks you're 
> trying to do Optional chaining on a non-optional value, which isn't allowed.
> 
> I wouldn't object to adding that "trailing '?' wraps the value" behavior (or 
> maybe "¿", since they really would have the opposite result), in which case 
> this should work fine (although the choice of argument label, or lack 
> thereof, will likely still be bikeshedded)
> 
> Anyway, unless someone who knows more about this than I do (probably most of 
> you) says this functionality is a Bad Idea (™), I'm in favor of it.
> 
> - Dave Sweeris
> _______________________________________________
> swift-evolution mailing list
> [email protected]
> https://lists.swift.org/mailman/listinfo/swift-evolution

_______________________________________________
swift-evolution mailing list
[email protected]
https://lists.swift.org/mailman/listinfo/swift-evolution

Reply via email to