On Monday, 7 October 2024 at 17:20:00 UTC, ryuukk_ wrote:

We went from trying to do that:

```d
struct EntityDef
{
    struct
    {
        int hp;
    } stats;
}
```


to getting suggested to do that instead:

```d
struct Foo
{
    int bar;

    //struct {/*
    Baz baz;
    struct Baz
    {
        auto opAssign(int value)
          => baz = value;//*/
        int baz;
    }
}

void main()
{
    Foo foo;
    foo.bar = 7;
    foo.baz = 42;

    imported!"std.stdio".writeln(foo); /*
    with opAssign()      Anonymous
    Foo(7, Baz(42))  or  Foo(7, 42)    */
}
```

I understand you, but you misunderstood me. You probably brought up a problem that can't be solved quickly (or ever). I wanted to acknowledge D's praise and bring a different perspective. Would this solution work for you?

```d
template Foo() { int hp; }
struct EntityDef
{
  mixin Foo stats;
}

void main()
{
  auto num = EntityDef(41);
  assert(num.stats.hp == 41);

  with(num)
  {
    stats.hp = 42;
    assert(stats.hp == 42);
  }
}
```

SDB@79

Reply via email to