On Tuesday, 29 November 2022 at 23:25:46 UTC, DLearner wrote:
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.

Which programming languages set your expectations this way? Many programming languages have the concept of "deep" vs. "shallow" copy. D is a part of a big crowd:

D:
```D
import std;

void main()
{
  auto a = [1, 2, 3, 4, 5];
  auto b = a;
  auto c = a.dup;

  a[1] = 99;

  writeln(a); // [1, 99, 3, 4, 5]
  writeln(b); // [1, 99, 3, 4, 5]
  writeln(c); // [1, 2, 3, 4, 5]
}
```

Python:
```Python
a = [1, 2, 3, 4, 5]
b = a
c = a.copy()

a[1] = 99

print(a) # [1, 99, 3, 4, 5]
print(b) # [1, 99, 3, 4, 5]
print(c) # [1, 2, 3, 4, 5]
```

Ruby/Crystal:
```Ruby
a = [1, 2, 3, 4, 5]
b = a
c = a.dup

a[1] = 99

pp a # [1, 99, 3, 4, 5]
pp b # [1, 99, 3, 4, 5]
pp c # [1, 2, 3, 4, 5]
```

Kotlin:
```Kotlin
fun main() {
  var a = intArrayOf(1, 2, 3, 4, 5)
  var b = a
  var c = a.copyOf()

  a[1] = 99

  println(a.contentToString()) // [1, 99, 3, 4, 5]
  println(b.contentToString()) // [1, 99, 3, 4, 5]
  println(c.contentToString()) // [1, 2, 3, 4, 5]
}
```

I could list even more languages.

Reply via email to