> On Jun 23, 2016, at 4:52 PM, Andreas Ley via swift-evolution 
> <swift-evolution@swift.org> wrote:
> 
>> "..*most* people don’t expect.." could you prove this please?
> 
> I should have written “most people I know” or “the people I work with".
> 
>> Especially if they know a little of C language or other language that don't 
>> allow to use wrong indexes for arrays.
> 
> Maybe that’s the point: They don’t. And it is my understanding that they 
> shouldn’t need to; that Swift should be for everyone and a great language to 
> get into programming.
> 
>> This behavior described in help/documentation/tutorial for Swift, this is 
>> how Swift works with arrays.
> 
> Yes, and I agree with you that people should read the documentation.
> However, the question is: Is this behavior optimal? Is a runtime error really 
> the best way to handle this for the most common use case of arrays?

Yes. If you are reaching out of bounds of the array, there is a computation 
error (most likely) and the app is in an incosistent state and it's always 
better to crash than to pretend it's all OK and potentially do some harm to 
user's data.

If the getter returned an optional, most people would get annoyed really 
quickly and started just placing ! everywhere, which would make the code the 
same, without the diagnostic message which index was accessed.

There is only a handful of usecases where it is advantageous to have the 
behavior described and no one can stop you from creating an extension and 
adding an accessor method that returns an optional.

AFAIK I don't know any language that is as strongly typed as Swift whose 
default behavior would be allowing to reach our of the bounds without a runtime 
error.

> But the definition of “most common use case” varies wildly. Hence my idea to 
> have separate classes for separate needs.
> 
> In the end, what’s most important to me is to be able to have a consistent 
> mental model. Something simple like: If I’m using classes called “unsafe” or 
> exclamation marks, my app might experience runtime errors. That’s something 
> the students I’ve taught could understand easily.
> 
> - 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

Reply via email to