foreach

via Digitalmars-d digitalmars-d at puremagic.com
Sun Jun 15 01:38:31 PDT 2014


On Sunday, 15 June 2014 at 07:05:37 UTC, Nick Sabalausky wrote:
> True story: I once had to put up with a production codebase 
> (the company's *flagship* product) that wasn't asm (it was VB6) 
> and yet was filled with garbage like this:
>
> if ...cond... then
>    ...statements...
>    goto somelabel
> end
> ...statements...
> somelabel:

Heh, when writing a state machine the implied loops can be 
nontrivial and then gotos can result in cleaner, tighter and 
faster code than a regular loop with a switch statement or 
function pointers or or whatever. Co-routines and gotos can 
provide pretty clean state machines.

IIRC the minimalistic Beta language used a lower level construct 
which allowed to loop a block (a pattern/object) using a 
"restart" statement. Then higher level looping constructs could 
be built on top of it. Basically like having the "continue" 
statement refer to a block.

Anyway, "for(;;)" is idiomatic in C by now, so changing it would 
be a bad idea.


More information about the Digitalmars-d mailing list