How to sum multidimensional arrays?

p.shkadzko p.shkadzko at gmail.com
Sat Feb 29 19:04:12 UTC 2020


On Friday, 28 February 2020 at 16:51:10 UTC, AB wrote:
> On Thursday, 27 February 2020 at 14:15:26 UTC, p.shkadzko wrote:
>>[...]
>
> Your Example with a minimal 2D array.
>
> ------------
> module test2;
>
> import std.random : Xorshift, unpredictableSeed, uniform;
> import std.range : generate, take, chunks;
> import std.array : array;
> import std.stdio : writeln;
>
> struct Matrix(T)
> {
>  int rows;
>  T[] data;
>  alias data this;
>  int cols() {return cast(int) data.length/rows;}
>  this(int r, int c) { data=new int[r*c]; rows=r;}
>  this(int r, int c, T[] d) {assert(r*c==data.length); data=d; 
> rows=r; }
>
>  auto opIndex(int r, int c) {return data[rows*c+r];}
>
> }

Can you please explain what is the purpose of "alias data this" 
in your Matrix struct? As I remember "alias <member> this" is 
used for implicit type conversions but I don't see where "data" 
is converted.


More information about the Digitalmars-d-learn mailing list