opApply/opApplyReverse return value types

Bill Baxter wbaxter at gmail.com
Tue Oct 17 14:21:34 PDT 2006


Max Samuha wrote:
> The question might seem idle but why opApply/opApplyReverse return int
> instead of bool, anyway?

Actually, why do they have to return anything?  It seems like it should 
be possible to make this work:

void opApply(void delegate(inout ArgT) dg)
{
    for (int i=0; i<length; i++)
    {
       if (dg(array[i]))
         break;
    }
}

I haven't totally grokked the code, but I see the magic is happening in 
statement.c, ForeachStatement::semantic somewhere.  That function is 
constructing the delegate that wraps the loop body.  I don't see why the 
delegate wrapper can't just store the value it returns to me so I don't 
have to keep track of it.  It seems weirdly low-level for me to have to 
be the shephard of some value who's meaning is totally opaque to me.

--bb



More information about the Digitalmars-d-learn mailing list