I agree about exhaustiveness checks being very useful. There was a suggestion 
for `switch?` implicitly adding `default: break`, `switch!` implicitly adding 
`default: fatalError()`, and `switch` remaining as it is now. I think that’s a 
great compromise, would you be in favor of that?

> -1. The “default: break” is not only not difficult to write, it clearly 
> communicates the programmer’s intent to only handle a subset of the cases. 
> Without it, it is impossible to know whether that was intended, or by 
> accident. Furthermore, the exhaustiveness by default can catch many mistakes, 
> including after an additional case is added to an enum.
> 
> Charles
> 
> > On Oct 3, 2016, at 5:14 AM, Adrian Zubarev via 
> > swift-evolution<swift-evolution at swift.org>wrote:
> > 
> > I know that there is this note in Commonly Rejected 
> > Changes<https://github.com/apple/swift-evolution/blob/master/commonly_proposed.md>:
> > 
> > Remove support for default: in switch and just use case _:: default is 
> > widely used, case _ is too magical, and default is widely precedented in 
> > many C family languages.
> > I really like to use the switch instead of if case for pattern matching, 
> > just because it’s neat block design. I do not want to remove default from 
> > switches because it’s a must have and powerful feature.
> > 
> > I’d like to know why switches must be exhaustive.
> > 
> > switch someValue {
> > 
> > case …:
> > // Do something
> > 
> > case …:
> > // Do something else
> > 
> > default:
> > () // useless nop; do nothing when no pattern matched
> > }
> > 
> > // VS:
> > 
> > if case … {
> > 
> > } else if case … {
> > 
> > } else if case … {
> > 
> > } // No need for `else`
> > Can’t we make default optional, or at least on non-enum values?
> > 
> > 
> > 
> > 
> > --
> > Adrian Zubarev
> > Sent with Airmail
> > 
> > _______________________________________________
> > swift-evolution mailing list
> > swift-evolution at swift.org<mailto:swift-evolution at swift.org>
> > https://lists.swift.org/mailman/listinfo/swift-evolution<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