Breaking out of multiple loops
Jose Armando Garcia
jsancio at gmail.com
Wed Sep 5 08:11:53 PDT 2012
On Sep 5, 2012, at 6:13, "Regan Heath" <regan at netmail.co.nz> wrote:
> On Wed, 05 Sep 2012 13:55:32 +0100, monarch_dodra <monarchdodra at gmail.com
> > wrote:
>
>> On Wednesday, 5 September 2012 at 12:43:26 UTC, Piotr Szturmaj wrote:
>>> Michel Colman wrote:
>>>> I have a very simple suggestion for breaking out of nested loops.
>>>
>>> I think it's already there: http://dlang.org/statement.html#BreakStatement
>>>
>>> "If break is followed by Identifier, the Identifier must be the
>>> label of an enclosing while, for, do or switch statement, and that
>>> statement is exited. It is an error if there is no such statement."
>>
>> I really wish there was a simple "break from current scope"
>> command. It would be kinda like "goto end of scope", just cleaner...
>
> You can lodge an enhancement request, example code:
>
> void main()
> {
> label: {
> // ..code..
> writefln("code1");
> writefln("break..");
> break label; // jumps to "here:"
> // ..code..
> writefln("code2");
> }
> // break lands here
> writefln("here");
> }
>
> Current error:
> test.d(nn): Error: enclosing label 'label' for break not found
>
> In fact, as any BlockStatement can be labeled you can argue any
> BlockStatement label should be 'breakable'.
>
Haven't tried it but this maybe implementable using templates, try and
catch.
I say this because Scala, being a "functional" language implements
this as a library using closure, high order function, try, catch and
throw. Maybe a few other features.
-jose
> R
>
> --
> Using Opera's revolutionary email client: http://www.opera.com/mail/
More information about the Digitalmars-d
mailing list