On 03/01/2018 11:43 PM, Jamie wrote:
So if I do
arr[0 .. 1][0] = 3;
shouldn't this return
[[3, 0, 0], [0, 0, 0]] ? Because I'm taking the slice arr[0 .. 1],
or arr[0], which is the first [0, 0, 0]?
arr[0 .. 1] is not the same as arr[0].
arr[0 .. 1] is not the first element of arr; it's an array that contains
the first element of arr. It's not [0, 0, 0]; it's [[0, 0, 0]]. It's not
an int[]; it's an int[][].
Then assigning the first
element to 3?
instead it returns
[[3, 3, 3], [0, 0, 0]]
Since arr[0 .. 1] is [[0, 0, 0]], arr[0 .. 1][0] is [0, 0, 0]. Assigning
3 to that means assigning to all of its values. And so you get [3, 3, 3].