Because one says "consider the next case" and the other says "do not consider the next case"
> On Jul 10, 2016, at 11:03 PM, Xiaodi Wu <xiaodi...@gmail.com> wrote: > > I know how it works. Why would you say that it's reasonable to prohibit > fallthrough when continue is used? The difference between it and break is > that Swift chooses the latter to be implied, and obviously we cannot prohibit > break. > On Sun, Jul 10, 2016 at 23:51 Erica Sadun <er...@ericasadun.com > <mailto:er...@ericasadun.com>> wrote: >> On Jul 10, 2016, at 10:34 PM, Xiaodi Wu <xiaodi...@gmail.com >> <mailto:xiaodi...@gmail.com>> wrote: >> >> >> >> On Sun, Jul 10, 2016 at 11:21 PM, Erica Sadun <er...@ericasadun.com >> <mailto:er...@ericasadun.com>> wrote: >>> On Jul 10, 2016, at 10:16 PM, Xiaodi Wu <xiaodi...@gmail.com >>> <mailto:xiaodi...@gmail.com>> wrote: >>> Given patterns A, B, C, and D, suppose a value x matches A, C, and D, >>> whereas another value y matches B and D, and a third value matches B and C. >>> When evaluating x, y, or z, which statements are executed in the following >>> switch statement? How many of these reach the default case? What happens if >>> I append `fallthrough` at the end of case D? What happens if I move case B >>> after case D? (Yes, I know it is possible to figure it out [my >>> understanding of the answer to the first question is appended below], but I >>> hope you'll agree with me that this is much more difficult to decipher than >>> any switch statement that's currently possible.) >>> >>> ``` >>> switch x /* or y, or z */ { >>> case A: >>> // ... >>> continue >>> case B: >>> // ... >>> if C ~= x /* or y, or z, whichever is switched over */ { >>> continue >>> } >>> fallthrough >> >> I'd say it would be fair to disallow continue and fallthrough to occur in >> the same clause >> >> Why should `fallthrough` be prohibited but implicit `break` become mandatory >> in such a clause? If `continue` were to be implemented in this context, I'd >> want the full power of the keyword, including being allowed to `continue` >> conditionally, `continue` with different labels, and round out the case if >> no conditions are satisfied with either `fallthrough` or `break` (or, for >> that matter, `return`, etc.). > > I do not understand. `break` is already implicit unless no other code is > used. > > case something: > if condition { continue } > // ends here. the compiler knows not to go forward and it's not an empty > clause > case somethingElse: > > `fallthrough` means "ignore the next case statement and execute its clause". > > -- E
_______________________________________________ swift-evolution mailing list swift-evolution@swift.org https://lists.swift.org/mailman/listinfo/swift-evolution