On Friday, 21 April 2023 at 05:23:14 UTC, Joel wrote:

Or: p.map!"a.age".sum; works too.

If it was me I would use each(). But D is such a powerful language that you have many alternatives:

```d
import std.algorithm, std.range, std.stdio;

struct Person { string name; int age; }
auto totalPersonAge = (int result, Person person)
                        => result + person.age;
void main()
{
    auto p = [
         Person("Kocaeli", 41),
         Person("Konya", 42)
    ];

    p.map!(a => a.age).reduce!"a + b".writeln;
    p.map!"a.age".reduce!"a + b".writeln;

    auto result = reduce!((a, b) => a + b.age)(0, p);
    result.writeln;

    assert(result == reduce!totalPersonAge(0, p));
    assert(result == p.fold!totalPersonAge(0));
    assert(p.map!(a => a.age).sum == p.map!"a.age".sum);


    size_t total;
    p.each!( (ref person) => total += person.age);
    total.writeln;
}
```
SDB@79

Reply via email to