Array construction - why backwards?
    Jarrett Billingsley 
    kb3ctd2 at yahoo.com
       
    Tue Apr 15 05:25:02 PDT 2008
    
    
  
"Bill Baxter" <dnewsgroup at billbaxter.com> wrote in message 
news:fu1g8u$1af6$1 at digitalmars.com...
>
> It makes declarations more consistent that way.
>
> T[5]  is a type that means array of 5 T's.
>
> If T is an int that means you have an int[5].
>
> Now what if T is an int[3]?
>
> Isn't it logical that to make an array of 5 of those you would do:
> T[5] ==> (int[3])[5] ==> int[3][5]
Exactly.
Another reason is when you have mixed "extended" types.  This is confusing:
int** foo[3][4];
There are decorators on both sides?  Huh?  This is far more readable:
int**[4][3] foo;
Since, just like every other declaration, you read right to left: a 
3-element array of 4-element arrays of pointers to pointers to ints.
Bring function pointers into the mix and.. well you get the idea.  Since 
every "composite" type follows the same right-to-left order, it makes things 
very easy to grok without having to use some kind of utility to decode types 
(like there are for C). 
    
    
More information about the Digitalmars-d-learn
mailing list