On Thursday, 17 October 2013 at 18:00:20 UTC, Vitali wrote:
Why the array have to be reallocated after the length of a slice is changed? It makes slices useless.

No, it doesn't. They are extremely helpful, particularly for high-performance applications.

Here a little example (it fails):

  void testSlices() {
    int[] dArr = [10, 11, 12];
    int[] dSlice = dArr[0..2];
    dSlice.length++;
    assert(dArr[2]==dSlice[2]); // failure
  }

Of course it does. Increasing the length of an array causes the new elements to be default-allocated by the language spec, and as dArr and dSlice share the same memory, not reallocating dSlice would clobber the third element of dArr.

Reply via email to