Allow designated initialization of struct
ryuukk_
ryuukk.dev at gmail.com
Fri Nov 1 12:26:25 UTC 2024
On Thursday, 31 October 2024 at 06:24:44 UTC, Salih Dincer wrote:
> On Wednesday, 30 October 2024 at 17:02:24 UTC, ryuukk_ wrote:
>>
>> D can do it, it just needs to stop limiting people on purpose,
>> again, if it wants to attract the C crowd, it needs to offer
>> better, not worse, otherwise people snub D
>
> I don't think like you. Already with ImportC, D has achieved a
> great superiority. I mean, it's not like you said, because
> they're coming in droves :) This video was a harbinger of this,
> and 2 years have passed and the D language has matured a lot. I
> can't even think about 2 years from now. Wonderful
>
> https://youtu.be/2ImfbGm0fls?si=_IZDi5bxfwLoMNBv
>
> SDB at 79
Ok let's try it this way:
```D
struct Other
{
int a;
}
struct Data
{
Other other;
}
void pass(Data data)
{
}
void main()
{
// THIS OK
Data data = {
other: { a: 42 }
};
// THIS OK
pass( Data(other: Other(a: 42)));
// WHY THIS NOT OK??
// pass( Data { other: {a: 42} } );
// WHY THIS NOT OK??
//pass( Data(other: {a: 42}));
}
```
Why limit for no reason what you can do with D
Why force people to repeat themselves `other: Other(a: 42)`?
This is the thing D does worse than all of the competition that
aim to replace C, even C3 does better... C3...
```C
struct Other
{
int value;
}
struct Data
{
Other[] other;
}
fn void pass(Data data)
{
}
fn void main()
{
pass( { .other = { {.value=42} } } );
}
```
This builds
This also build:
```C
enum State
{
IDLE,
RUN,
ATTACK,
}
fn void main()
{
State state = IDLE;
if (state == RUN) {
// run
}
}
```
D needs to to better
More information about the dip.ideas
mailing list