I still think the best solution is that proposal, plus allowing subscript 
setters to take a T if their getters return a T? or T!, to avoid the problem of 
`nil` becoming the wrong type in cases where T itself is NilLiteralConvertible.

- Dave Sweeris

> On Jun 23, 2016, at 7:34 AM, Vladimir.S via swift-evolution 
> <swift-evolution@swift.org> wrote:
> 
> Please find the related proposal which was formed after the long discussion 
> in the list:
> 
> https://github.com/luish/swift-evolution/blob/proposal-lenient-collection-subscripts/proposals/nnnn-more-lenient-collections-subscripts.md
> 
> Here is the pull request on the swift-evolution repo:
> https://github.com/apple/swift-evolution/pull/328
> 
> On 23.06.2016 13:12, Andreas Ley via swift-evolution wrote:
>> (First time using a mailing list; I hope this message ends up in the correct 
>> thread)
>> 
>> This is a topic that comes up regularly on the Swift evolution mailing list 
>> and off it.
>> After reading through all the respective threads again, there seem to be the 
>> following two camps:
>> 
>> Arguments made for crashing when accessing a non-existent index:
>> - fast
>> - shows bugs quickly
>> 
>> Arguments made in favor of returning an optional by default:
>> - safe (as in "doesn't crash")
>> - similar to what other modern languages do
>> - what an unexperienced Swift developer would expect
>> 
>> All are valid arguments, but for different use cases.
>> In my opinion, the biggest problem is that there's no indication that 
>> subscripting can crash on the default array. Alternative subscripts for 
>> bounded access wouldn't solve this either.
>> 
>> Maybe Swift should have two different array classes: A fast, fast-failing 
>> "UnsafeArray" and a default safe "Array". This would prevent unexpected 
>> crashes for new Swift programmers while still providing a faster alternative 
>> for those who do low-level stuff. The name "UnsafeArray" would clearly 
>> communicate that this class should be handled with care.
>> 
>> - Andreas
>> _______________________________________________
>> swift-evolution mailing list
>> swift-evolution@swift.org
>> https://lists.swift.org/mailman/listinfo/swift-evolution
>> 
> _______________________________________________
> swift-evolution mailing list
> swift-evolution@swift.org
> https://lists.swift.org/mailman/listinfo/swift-evolution

_______________________________________________
swift-evolution mailing list
swift-evolution@swift.org
https://lists.swift.org/mailman/listinfo/swift-evolution

Reply via email to