On Sun, 22 May 2011 22:46:13 -0400, Jonathan M Davis <[email protected]>
wrote:
On 2011-05-18 11:03, Steven Schveighoffer wrote:
Having seen quite a few incorrect descriptions of how D slices work
(particularly regarding appending), I wrote an article that tries to
describe how D slices work, and why they behave the way they do.
Being one of the only places where I have web space, it's on my
dcollections site, I probably will move it to the D wiki eventually, but
I'm much more familiar with the Trac wiki syntax.
Please, if you have any comments or recommendations, let me know. I
certainly am no author, so I probably screwed a few things up :)
http://www.dsource.org/projects/dcollections/wiki/ArrayArticle
Finally got around to reading it. Definitely a good article. I even
learned a
few things from it (primarily surrounding implementation details). I am
a bit
surprised that you never mentioned that a slice is essentially struct
with the
a C style array pointer and the length of the slice (particularly since
that
helps to explain why passing an array without ref means that altering the
slice rather than its elements doesn't alter the array that was passed
in),
but it still works quite well without that.
A slice is kind of an opaque type. You shouldn't rely on the exact
implementation (at one point, Walter was considering changing it to a
begin and end pointer), although I do describe its implementation, without
saying it's a struct:
"A slice is a segment of an array (dynamic or otherwise) that tracks both
the pointer and the length of the segment"
A couple of total nitpicks would
be that the first sentence should say "...is its implementation..."
rather
than using "are",
Fixed, thanks!
and the title "A Slice You Can Append On" should be "A Slice
You Can Append To."
This was intentional :) It's a pun (something "you can depend on").
But as those just nitpicky grammar issues. Overall, it's
very good and definitely something that D programmers (especially
newbies)
should read. Dynamic arrays and slices throw them off too often.
Thanks!
-Steve