On 2010-12-13 04:23, Adam D. Ruppe wrote:
Ary Borenszweig wrote:
D should provide a yield keyword that basically
rewrites the body of the method into the first code.

Don't need to change the language for that.

=========

string yield(string what) {
   return `if(auto result = dg(`~what~`)) return result;`;
}

class Foo
{
     uint array[2];

     int opApply(int delegate(ref uint) dg) {
          mixin(yield("array[0]"));
          mixin(yield("array[1]"));

        return 0;
     }
}
=========

Compiles and runs as expected, on today's D.

This is just ugly.

--
/Jacob Carlborg

Reply via email to