On 07/18/2012 08:21 AM, Mike L. wrote:
>> Also, UFCS makes no sense on overloaded operators, because they don't get
>> called with ".", and all UFCS is is changing obj.func(params) to
>> func(obj,
>> params).
>>
>> - Jonathan M Davis
>
> Ok, that's basically what I was wondering. I had assumed foreach(e;
> someThing) {} could possibly have been converted to someThing.opApply()
> . Thanks for clarifying.

But that is still true and opApply receives the body of the foreach loop as a delegate:

    someThing.opApply(delegate int(/* loop variables */) {
        // ... the body of foreach ...
        return terminationCode; // whether the user did 'break;'
    });

Also, the following bug (that is already fixed) is somewhat related to this discussion:

  http://d.puremagic.com/issues/show_bug.cgi?id=5605

Ali

Reply via email to