On Friday, 29 March 2013 at 01:13:36 UTC, Jonathan M Davis wrote:
In either case, I'd suggest reading this if you want to know
more about
ranges:
http://ddili.org/ders/d.en/ranges.html
Thank you, I will read that (when the time is not 0400).
I feel I need to stress that this is something that quite
possibly will scare away newcomers, that static arrays, dynamic
arrays and ranges looks very similar to each other, but behaves
differently. This is not the first time I fall in this pit, and I
suspect it's not the last time either.
And well, sorry for continuing to nag about this, but take a look
at the documentation for read(), write() and append() in
std.bitmanip:
T read(T, Endian endianness = Endian.bigEndian, R)(ref R
range);
void write(T, Endian endianness = Endian.bigEndian, R)(R
range, T value, size_t index);
void append(T, Endian endianness = Endian.bigEndian, R)(R
range, T value);
append() and write() are practically identical, just with write()
having an extra parameter. The documentation even comes with
examples for write() that use "ubyte[] buffer;
buffer.write!ubyte(42, 0);", is it really odd that I assumed I
could use append() in a similar matter when its parameters are
exactly the same as for write() (minus the index)? Or is it
unthinkable that I mistook arrays and Ranges for being
interchangeable when the examples pass an array to a function
that takes a Range?
Ranges is something that's going to be new for a lot of people
entering this language. When you know how arrays and ranges works
in D I'm sure this makes perfect sense, but until you learn that,
this is something that likely will confuse many people.
Hopefully the article about ranges will clear things up for me.