Thread overview
why array do not support gcc style Initialize way?
Sep 11, 2019
lili
Sep 11, 2019
Paul Backus
Sep 11, 2019
Meta
Sep 11, 2019
Paul Backus
Sep 11, 2019
Meta
Sep 11, 2019
Roberto Rosmaninho
Sep 11, 2019
H. S. Teoh
Sep 11, 2019
ag0aep6g
September 11, 2019
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, 2019
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, 2019
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, 2019
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, 2019
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, 2019
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, 2019
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, 2019
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