On Friday, 29 December 2017 at 23:13:20 UTC, Jonathan M Davis
wrote:
The term "slice" is a bit overused in D, meaning a variety of
things. It doesn't help that some folks dislike the official
terminology. In general, a slice is a contiguous group of
elements. A slice of memory would be a contiguous block of
memory. A dynamic array therefore refers to a slice of memory
and could be called a slice, but it's also the case that using
the slice operater on a container is called slicing - e.g.
rbt[] would give you a range over the container rbt, and that
range is a slice of the container, but it's not an array at all.
For me, it is confusing to use "slice" and "dynamic array" as
synonyms. My initial impression was that they must have different
code underlying them, and different behavior. I would pick one or
the other. It should be:
D Arrays
- Static
- Dynamic
or
D Arrays
- Static
- Slice
The DLang Tour has a section on Slices that says in bold "Slices
and dynamic arrays are the same". I think that sentence deserves
an explanation as to why there are two terms being utilized for
the same thing. I would prefer that "slice" as a noun was used
only for the time when a dynamic array was initialized from a
slice of another array. Or better yet - slice was never used as a
noun - only a verb or adjective: took a slice of array A to form
a slice dynamic array B (or slice-intialized dynamic array B).
D Arrays
- Static
- Dynamic
- Slice-Initialized Dynamic