Madhav wrote:
== Quote from spir ([email protected])'s article
On 03/23/2011 12:01 PM, Madhav wrote:
Hi,

I tried to do the following:
auto arr = new int[2][2];
arr[] = 1; // using array expressions
// The above gives - Error: cannot implicitly convert expression (1) of type
int  to const(int[2u][])

This was the first step to try out if array arithmetic that worked with single
dimensional arrays worked with multi-dimensional. I guess it does not.

The immediate utility of this would be to cleanly do matrix algebra. Any ideas
why powerful array expressions were not extended to multi dimensional arrays
as well?

Regards,
Madhav
IIUC, you can do it level by level only:
unittest {
     int[3] a3;
     int[3][2] a32;
     a3[] = 1;
     a32[] = a3;
     assert(a32 == [[1,1,1], [1,1,1]]);
}
Note: in those assignments, [] is optional, but I consider this as a bug. Even
more since
    int[3] a3 = 1;      // works
    int[3][2] a32 = a3  // works not
denis

Yes i guessed that. My question was more to do with extending array expressions
for multi dimensional arrays as well.
Don't you think this should be provided by the language? It will ease out a lot 
of
mathematical implementations

The problem is, that with the multi-dimensional case, you generally want STRIDED operations. These are much more complicated, and are much easier to implement in a library rather than in the core language.

Belongs in Phobos, no doubt about it. Currently waiting for the enhancement patch in bug 3474 to be applied.

Reply via email to