On Tuesday, 29 July 2014 at 20:06:28 UTC, Marc Schütz wrote:
int[3] a = [1, 0, -1];
int[] b = a;
int[] c = new int[4];
b[] = c[1..4];
assert(a[2] == 0);
// This copies a slice of the slice c onto the slice b
(which refers to a).
Playing the devil's advocate:
Yes, it does so by assigning a slice from `c` to a slice from
`b`.
Let's try to explain why this:
b = c[1..4];
changes what b refers to, while this:
b[] = c[1..4];
copies.
Well, if you assign a slice to a slice, that means 'copy
elements'.
But if you assign a slice to <what b is>, that means change the
reference.