On Monday, 7 October 2024 at 09:22:20 UTC, Nick Treleaven wrote:
On Monday, 7 October 2024 at 08:05:59 UTC, ryuukk_ wrote:
I'm working on it TODAY, therefore i need a today's solution
```d
import std.typecons;
struct EntityDef
{
Tuple!(int, "hp") stats;
}
void main()
{
EntityDef ed;
int x = ed.stats.hp;
}
```
Okay, i notice a pattern with Dlang
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) */
}
```
to getting suggested to now do that:
```D
import std.typecons;
struct EntityDef
{
Tuple!(int, "hp") stats;
}
void main()
{
EntityDef ed;
int x = ed.stats.hp;
}
```
Wich ends up improting a 11k LOC module:
https://github.com/dlang/phobos/blob/master/std/typecons.d#L11092
Wich traverse god knows how many templates
Only just because i wanteed to do:
```D
struct EntityDef
{
struct
{
int hp;
} stats;
}
```
Why wanting to complicate everything?
I know i'm not a professional developper, i do this as a hobby,
so i must be missing something
But something tells me that i'm not missing anything, i can't pin
point it just yet!