On Tuesday, 30 June 2015 at 22:37:34 UTC, ixid wrote:
int[] a = [1,1,1,1];
int[] b = [1,1,1,1];
int[] c;
c[] = a[] - b[];
c.writeln;
This outputs []. This feels wrong, it feels like something that
should have exploded or set the length to 4. If the lengths of
a and b are mismatched it throws an exception. It also throws
an exception if a dynamic array is longer or a static array is
not the same length but is happy when a dynamic array is
shorter. Is this intended behaviour and if so why?
I don't think this is a bug.
Since you don't initialize `c` to anything, it defaults to an
empty slice. Array [] operations apply to each element of a
slice, but `c` doesn't have any elements, so it does nothing.
Change `int[] c;` to `int[] c = new int[4];` and it works.