Slices and Dynamic Arrays

Ali Çehreli acehreli at yahoo.com
Tue Jan 2 19:32:07 UTC 2018


On 01/02/2018 11:17 AM, Jonathan M Davis wrote:
 > On Tuesday, January 02, 2018 10:37:17 Ali Çehreli via Digitalmars-d-learn
 > wrote:
 >> For these reasons, the interface that the program is using is a "slice".
 >> Dynamic array is a different concept owned and implemented by the GC.
 >
 > Except that from the standpoint of the API, T[] _is_ the dynamic array -
 > just like std::vector is the dynamic array and not whatever its guts 
are -

I understand your point but I think it's more confusing to call it a 
dynamic array in the following code:

     int[42] array;
     int[] firstHalf = array[0..$/2];

I find it simpler to see it as a slice of existing elements.

In contrast, calling it a dynamic array would require explaining not to 
worry, no memory is being allocated; the dynamic array is backed by the 
stack. Not very different from calling it a slice and then explaining 
the GC involvement in the case of append.

 > Regardless, the fact that they're a container/range hybrid is what makes
 > this such a mess to understand. The semantics actually work 
fantastically if
 > you understand them, but it sure makes understanding them annoyingly
 > difficult.
 >
 > - Jonathan M Davis

Agreed.

Ali



More information about the Digitalmars-d-learn mailing list