On Tuesday, 10 February 2015 at 01:31:54 UTC, FG wrote:
On 2015-02-10 at 01:41, bearophile wrote:

    auto query = iota(2, 12)
.map!(c => Tuple!(int,"length", int,"height", int,"hypotenuse") (2 * c, c ^^ 2 - 1, c ^^ 2 + 1)) .map!(x => "%3d%4d%4d".format(x.height, x.hypotenuse, x.length));


I took advantage of the fact that all elements were of the same type:

    auto query = iota(2, 2 + 10)
.map!(c => ["Length": 2 * c, "Height": c * c - 1, "Hypotenuse": c * c + 1]) .map!(x => format("%4d%4d%4d", x["Height"], x["Hypotenuse"], x["Length"]));
    ...

and was surprised that it worked straight away. :)
But definitely this looks better and less complicated:

    auto query = iota(2, 12)
        .map!(c => tuple(c ^^ 2 - 1, c ^^ 2 + 1, 2 * c));
    foreach (x; query)
        writefln("%4d%4d%4d", x[]);

It's the foreach version, since `each` isn't officially out yet.

Thank you.

Reply via email to