even more delegate sugar
Don Clugston
dac at nospam.com.au
Tue Aug 22 00:00:59 PDT 2006
Tom S wrote:
> While we're at it, how about allowing the construct:
> methodName (arg, arg, ..., arg, { ... });
>
> to be equivalent to:
> methodName (arg, arg, ..., arg) { ... }
>
>
> and
> methodName ({ ... });
>
> to
> methodName {}
>
>
> Then e.g. the 'dotimes' example from 'Lazy Evaluation of Function
> Arguments' would become:
>
> void foo() {
> int x = 0;
> dotimes(10) {
> writef(x++);
> }
> }
>
>
> Which eliminates the need for lazy evaluation in this case, as it simply
> uses a delegate. Moreover, it is more readable and concise at the same
> time.
Sounds nice, but nowhere near enough visual cues.
If you leave off a semicolon, the meaning completely changes.
dotimes(10); {
writef(x++);
}
and
dotimes(10)
{
writef(x++);
}
would both be valid code.
But an amazing feature of your proposal is that you could write
a function
void If(bool b, void delegate (void) f);
and then write
If( cond) { writef(xxxx); }
which would behave just like the built-in 'if' statement (albeit without
an 'else' clause). Interesting.
More information about the Digitalmars-d
mailing list