Replacing nested loops foreach using map/each/etc
Meta via Digitalmars-d-learn
digitalmars-d-learn at puremagic.com
Mon May 25 10:19:26 PDT 2015
On Monday, 25 May 2015 at 17:05:35 UTC, Dennis Ritchie wrote:
> On Monday, 25 May 2015 at 16:41:35 UTC, Meta wrote:
>> import std.algorithm;
>> import std.range;
>> import std.stdio;
>>
>> void main()
>> {
>> const x = 12, y = 65, z = 50, s = 1435;
>> auto a = iota(0, x + 1);
>> cartesianProduct(a, a, a)
>> .filter!(i => i[0] * (y + 3 * z)
>> + i[1] * (y + 2 * z)
>> + i[2] * (y + z)
>> == s)
>> .each!((idx)
>> {
>> writeln(idx[0] + idx[1] + idx[2]);
>> writeln(idx[0] * 3 + idx[1] * 2 + idx[2]);
>> writeln(idx[0] * 3 + idx[1] * 2 + idx[2]);
>> writeln(idx[0], idx[1], idx[2]);
>> });
>> }
>
> Thanks. I do not even know what `each` support braces.
`each` doesn't support braces. There are 4 ways to write a
function/delegate literal in D (with a few minor variations):
Short form:
function(int i) => i;
(int i) => i
(i) => i
i => i
Long form:
function(int i) { return i; }
(int i) { return i; }
(i) { return i; }
{ return 0; }
http://dlang.org/expression.html#FunctionLiteral
function
More information about the Digitalmars-d-learn
mailing list