On 25.09.19 22:36, WhatMeWorry wrote:
On Wednesday, 25 September 2019 at 19:25:06 UTC, Ali Çehreli wrote:
On 09/25/2019 12:06 PM, WhatMeWorry wrote:
[...]
> In short, is there anytime that one would want to use
"slice[] =
> something" syntax?I

That changes element values.

Ok.  But which element(s)?

All of them. For example, `slice[] = 42;` sets all elements to 42. And `slice[] = another_slice[];` replaces all elements of `slice` with copies of `another_slice`'s elements.

  In my specific case, I was using []. Is

waste[] = waste[0..$-1];

even semantically meaningful?  Because the LDC compiler had no problem compiling it.

It's equivalent to this:

----
waste[0] = waste[0..$-1][0];
waste[1] = waste[0..$-1][1];
...
waste[waste.length - 2] = waste[0..$-1][waste.length - 2];
waste[waste.length - 1] = waste[0..$-1][waste.length - 1];
----

So it basically does nothing. It just copies `waste`'s elements over themselves.

Except that the last line makes an out-of-bounds access. That's an error that may be detected during compilation or at run time. Or if you're telling the compiler to optimize too aggressively, it might go unnoticed.

Reply via email to