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
