On 2020-01-07 17:42:48 +0000, Adam D. Ruppe said:


So [x][y] indexes an array of arrays.


Yes, that's what I understand. And both can be dynamic, so that I can have a "flattering" layout where not all arrays have the same length.


 [x,y] indexes a single array that has two dimensions.


Does this fix the dimension sizes? So I can't add a "row" or "column" at runtime?


What are the difference use-cases for these two? For example, I'm doing a grid widget but want to add/remove rows/columns. Can this only be done with a array-of-array? Is the memory continuous in the [x,y] case, whereas in the [x][y] this is not necessarily the case?


This can be kinda confusing because we often think of


int[4][4]


as being a 2d array, but the D language actually technically sees that as an array of arrays. So it is indexed with [x][y].


Yes, it's confusing as I don't understand the [x,y] case :-)


There is no built in multi-dimensional array, it is only syntax provided for library types to implement with the opIndexAssign overloads.


I don't get that sentence. Above you write "a single array that has two dimensions" which IMO is exactly a multi-dimensional array.


So the operator there like += or -= or *= etc become opAssign, whereas plain = is just plain Assign.


Got it. Thanks.


-- 

Robert M. Münch

http://www.saphirion.com

smarter | better | faster