Java: break and continue with an optional boolean condition

Brian Goetz brian.goetz at oracle.com
Mon Jun 11 13:10:43 UTC 2018


Of course, you can do what you are suggesting relatively simply and with 
almost as few characters:

     if (i > 10)
         break;

Some languages let you do one-off conditional statements:

     break if (i > 10);

In some cases, this is more readable than the full "if statement" form, 
because it telegraphs the intent to conditionally break a little more 
clearly.  In some cases.

But, I don't find the proposed feature very compelling.  It is neither 
substantially more concise, nor does it open up interesting new avenues 
of expression -- it's mostly a linguistic "hack".

It also constrains with what else we might, in future, want to use as an 
argument to break or continue.  And in fact, expression switches use 
`break` to yield a value for the expression.  (By contrast, this _is_ 
something that opens up interesting new avenues of expression.)  A break 
with a boolean would now be ambigious with break with a value to be 
yielded to a switch.

The `{ statement } if { expression }` form is less problematic in this 
way -- but we still have not been able to convince ourselves that the 
language would be better off with this form than without.

Cheers,
-Brian


> Would you consider a proposal for extending break and continue with an
> optional boolean condition as reasonable?
> The idea can be summarized in the code example:
>
>      for (;;) {
>          ...
>
>          break (i > 10);
>          ...
>
>          continue (i <= 12);
>
>          ...
>
>      }
> //syntax will be:  break/continue [label] [boolean expression];
>
> This will increase the code readability of for, do and while; and leave
> additional if and some curly brackets out of the picture.
>
> My arguments for such extension is that it solves the expressiveness
> concerns that Donald E. Knut explain in its article "Structured Programing
> with GOTO statements" by describing the Ole-Johan Dahl proposal for [loop
> while repeat] structure where the condition is not bound to the beginning (
> do...while()) nor to the end of the repeating block (while()...) which
> makes the controlled flow of the program more effective.
>
> Thank you for your time and consideration!
>
> With Regards,
> George Radev



More information about the amber-dev mailing list