My proposal is for a slight addition to for and foreach statements by allowing different blocks of code to be executed whether the loop is exited from the condition failing or a break statement. These would of course be independently optional.
For example:

for(int num = 0; num < 10; num++)
{
    if(<condition>)
        break;
}
then
{
    //num successfully counted up to 10
    //do stuff...
}
else
{
    //loop was broken prematurely
    //do other stuff...
}

One instance where this would be useful is in situations when code should be executed if an item is not found while searching.
For example:

Current solution:

int[] nums = [1, 2, 3, 4, 5];
int i = 6;

bool intFound = false;
foreach(n; nums)
{
    if(n == i)
    {
        intFound = true;
        break;
    }
}

if(!intFound)
{
    //i was not found, do stuff
}

Using for/then/else:

int[] nums = [1, 2, 3, 4, 5];
int i = 6;

foreach(n; nums)
{
    if(n == i)
        break;
}
then
{
    //i was not found, do stuff
}

Not only would this be more compact and easier to read, but it should also be more efficient (less checking and less memory usage).

Reply via email to