On Tuesday, 29 November 2022 at 19:06:20 UTC, rikki cattermole wrote:
[...]

Please see the following example:
```
void main() {

   import std.stdio;

   int[] VarArr1, VarArr2;

   VarArr1.length = 6;
   VarArr1[5] = 10;
   VarArr1[4] = 9;
   VarArr1[3] = 8;
   VarArr1[2] = 7;
   VarArr1[1] = 6;
   VarArr1[0] = 5;

   VarArr2 = VarArr1;
   writeln("VarArr1 = ", VarArr1);
   writeln("VarArr2 = ", VarArr2);

   VarArr1[3] = 40;
   writeln("VarArr1 = ", VarArr1);
   writeln("VarArr2 = ", VarArr2);

   return;
}
```

And it's result:
```
VarArr1 = [5, 6, 7, 8, 9, 10]
VarArr2 = [5, 6, 7, 8, 9, 10]
VarArr1 = [5, 6, 7, 40, 9, 10]
VarArr2 = [5, 6, 7, 40, 9, 10]
```
Many languages have fixed-length arrays, D's such construct works as someone approaching the language would expect. Many languages also have variable length arrays, I suggest D's 'dynamic array' _does not_ operate as expected. I'm not suggesting that the result contradicts D's definition of 'dynamic array', nor it's implementation, just that 'dynamic array' is not a reasonable description for a construct that behaves like VarArr2[3] becoming 40.

Reply via email to