Fixed size array initialization
b2.temp at gmx.com
b2.temp at gmx.com
Sat Feb 10 12:28:16 UTC 2018
On Saturday, 10 February 2018 at 10:55:30 UTC, rumbu wrote:
> I know that according to language spec
> (https://dlang.org/spec/arrays.html#static-init-static) you can
> skip declaring all your elements in a fixed size array.
>
> I'm just recovering from a bug which took me one day to
> discover because of this.
>
> I have a large static initialized array, let's say int[155],
> and I forgot to declare the last element:
>
> int[155] myarray = [
> a,
> b,
> c,
> ...
> //forgot to declare the 155th element
> ];
>
> I took for granted that the compiler will warn me about the
> fact that my number of elements doesn't match the array
> declaration but I was wrong.
>
> Does it worth to fill an enhancement on this, or this is
> intended behavior?
I used to agree (https://issues.dlang.org/show_bug.cgi?id=17341)
and even patched the compiler to emit a deprecation in this case.
Then i discovered that druntime for example relies on this.
The classic use case is to init a LUT where only a few elements
need a non-default value, for example:
```
bool[char.max] lut = [10:true, 13:true, 9: true];
assert(!lut[46]);
assert(lut[9]);
```
which can be useful.
More information about the Digitalmars-d-learn
mailing list