Daniel Keep wrote:
No; read the code. Before the put, a and b are pointing to the same
span of memory. a.put(5) puts the value 5 into the front (first
element) of the array, then advances the array.
However, put can't "see" b, so it doesn't get updated along with a. The
end result is that b = [5,2,3] and a = b[1..3] = [2,3].
Why do it like this? Here's an example:
void putNumbers(Range)(Range r)
{
int i = 0;
while( !r.empty )
{
r.put(i);
++i;
}
}
void main()
{
int[10] ten_numbers;
putNumbers(ten_numbers);
assert( ten_numbers = [0,1,2,3,4,5,6,7,8,9] );
}
I see.
Your example should be in the documentation in my opinion, rather
then the meaningless one that's there now. Something like this
perhaps:
void putNumbers(Range, T)(Range r, T start, T incr) {
T i = start;
while( !r.empty )
{
r.put(i);
i += incr;
}
}
void main() {
int[10] ten_ints;
putNumbers!(int[])(ten_ints, 4, 2);
assert( ten_ints == [4,6,8,10,12,14,16,18,20,22] );
}
Jos