Thread overview
why array do not support gcc style Initialize way?
Sep 11
lili
Sep 11
Meta
Sep 11
Meta
Sep 11
ag0aep6g
September 11
Hi:
    In C array init is early than D。
    int ary[3]={[1]=2};
    int ary[100]={[10 ... 20]=10};
    Why D betterC do not support this way。
September 11
On Wednesday, 11 September 2019 at 12:00:01 UTC, lili wrote:
> Hi:
>     In C array init is early than D。
>     int ary[3]={[1]=2};
>     int ary[100]={[10 ... 20]=10};
>     Why D betterC do not support this way。

D's array initialization uses different syntax from C:

    int[3] ary = [ 1: 2 ]; // index: value

For details, see the D language specification's section on static array initialization:
https://dlang.org/spec/arrays.html#static-init-static
September 11
On Wednesday, 11 September 2019 at 19:19:51 UTC, Paul Backus wrote:
> On Wednesday, 11 September 2019 at 12:00:01 UTC, lili wrote:
>> Hi:
>>     In C array init is early than D。
>>     int ary[3]={[1]=2};
>>     int ary[100]={[10 ... 20]=10};
>>     Why D betterC do not support this way。
>
> D's array initialization uses different syntax from C:
>
>     int[3] ary = [ 1: 2 ]; // index: value
>
> For details, see the D language specification's section on static array initialization:
> https://dlang.org/spec/arrays.html#static-init-static

Wow, I've been using D for 7 years and had no idea this was possible. Normally the [ 1:2 ] syntax defines an associative array; do you happen to know where in the spec this is mentioned, if at all?
September 11
On Wednesday, 11 September 2019 at 19:44:47 UTC, Meta wrote:
> On Wednesday, 11 September 2019 at 19:19:51 UTC, Paul Backus wrote:
>> D's array initialization uses different syntax from C:
>>
>>     int[3] ary = [ 1: 2 ]; // index: value
>>
>> For details, see the D language specification's section on static array initialization:
>> https://dlang.org/spec/arrays.html#static-init-static
>
> Wow, I've been using D for 7 years and had no idea this was possible. Normally the [ 1:2 ] syntax defines an associative array; do you happen to know where in the spec this is mentioned, if at all?

It's right under the header I linked to in my message :)
September 11
On Wednesday, 11 September 2019 at 19:55:00 UTC, Paul Backus wrote:
> On Wednesday, 11 September 2019 at 19:44:47 UTC, Meta wrote:
>> On Wednesday, 11 September 2019 at 19:19:51 UTC, Paul Backus wrote:
>>> D's array initialization uses different syntax from C:
>>>
>>>     int[3] ary = [ 1: 2 ]; // index: value
>>>
>>> For details, see the D language specification's section on static array initialization:
>>> https://dlang.org/spec/arrays.html#static-init-static
>>
>> Wow, I've been using D for 7 years and had no idea this was possible. Normally the [ 1:2 ] syntax defines an associative array; do you happen to know where in the spec this is mentioned, if at all?
>
> It's right under the header I linked to in my message :)

Whoops, I was too surprised to even read your full post before rushing off to run.dlang.io to test it out for myself.
September 11
On Wednesday, 11 September 2019 at 19:19:51 UTC, Paul Backus wrote:
> For details, see the D language specification's section on static array initialization:
> https://dlang.org/spec/arrays.html#static-init-static

Hey, at this section the code below:

enum Color { red, blue, green };

int[Color.max + 1] value =
  [ Color.blue :6,
    Color.green:2,
    Color.red  :5 ];

Produces the output “onlineapp.d(4): Deprecation: use `{ }` for an empty statement, not `;`” when I executed it.

Any clues of why it’s happened?
September 11
On Wed, Sep 11, 2019 at 08:36:03PM +0000, Roberto Rosmaninho via Digitalmars-d wrote: [...]
> enum Color { red, blue, green };
> 
> int[Color.max + 1] value =
>   [ Color.blue :6,
>     Color.green:2,
>     Color.red  :5 ];
> 
> Produces the output “onlineapp.d(4): Deprecation: use `{ }` for an empty statement, not `;`” when I executed it.
> 
> Any clues of why it’s happened?

Delete the ';' from the end of your 'enum' declaration. In D, enum declarations do not need to be terminated with ';' (you cannot declare enum variables with it, unlike C).


T

-- 
INTEL = Only half of "intelligence".
September 11
On 11.09.19 22:36, Roberto Rosmaninho wrote:
> On Wednesday, 11 September 2019 at 19:19:51 UTC, Paul Backus wrote:
[...]
>> https://dlang.org/spec/arrays.html#static-init-static
> 
> Hey, at this section the code below:
> 
> enum Color { red, blue, green };
[...]
> Produces the output “onlineapp.d(4): Deprecation: use `{ }` for an empty statement, not `;`” when I executed it.
> 
> Any clues of why it’s happened?

The semicolon after the enum is wrong.
PR to fix it: https://github.com/dlang/dlang.org/pull/2701