On Wednesday, 5 February 2014 at 11:21:12 UTC, bearophile wrote:
myRange
.each {
e.someOperation;
};
Possibly better:
myRange
.each (e) {
e.someOperation;
};
Bye,
bearophile
I is unclear from the syntax whether `(e)` is a the argument list
and `{...}` is a block lambda or the property syntax is used and
`(e) {...}` is a regular lambda.
How about using the Ruby style of blocks:
myRange
.each do(e) {
e.someOperation;
};
This will also give a nice syntax when passing named functions:
myRange.each do writeln;
Alternatively, we can fuse the delegate definition with the
higher order function's call syntax like this:
myRange
.each (auto e) {
e.someOperation;
};
Here, `(auto e)` *is* the argument list of `each`, but it's clear
that `e` is not an argument passed to `each` because it uses the
declaration syntax rather than being an expression. Actual
arguments could be passed in the same list:
forEachInRange(auto i, 0, 10) {
...
}
This, ofcourse, will require some special syntax for declaring
the higher order function.