How initialize a static rectangular array (2-d matrix)

2009-10-08 Thread Justin Johansson
I almost have to apologize for this question but ..

How does one initialize a static rectangular array (2-d matrix) in D1?

None of the following or other variations that I've tried compile with DMD 1.0.

int[2, 3] matrix = [ 1, 2, 3,  4, 5, 6 ]; 

int[2, 3] matrix = [[ 1, 2, 3 ], [ 4, 5, 6 ]]; 

Thanks for all help.



Re: How initialize a static rectangular array (2-d matrix)

2009-10-08 Thread Justin Johansson
Jarrett Billingsley Wrote:

 On Thu, Oct 8, 2009 at 8:10 PM, Justin Johansson n...@spam.com wrote:
  I almost have to apologize for this question but ..
 
  How does one initialize a static rectangular array (2-d matrix) in D1?
 
  None of the following or other variations that I've tried compile with DMD 
  1.0.
 
  int[2, 3] matrix = [ 1, 2, 3,  4, 5, 6 ];
 
 ..that's not how you declare a rectangular array type. It's int[3][2].
 
 int[3][2] matrix = [[1, 2, 3], [4, 5, 6]];

Of course.  Blonde moment.  Worked 18 hrs yesterday  not enough sleep. :-(



Re: How initialize a static rectangular array (2-d matrix)

2009-10-08 Thread Justin Johansson
Jarrett Billingsley Wrote:

 On Thu, Oct 8, 2009 at 8:10 PM, Justin Johansson n...@spam.com wrote:
  I almost have to apologize for this question but ..
 
  How does one initialize a static rectangular array (2-d matrix) in D1?
 
  None of the following or other variations that I've tried compile with DMD 
  1.0.
 
  int[2, 3] matrix = [ 1, 2, 3,  4, 5, 6 ];
 
 ..that's not how you declare a rectangular array type. It's int[3][2].
 
 int[3][2] matrix = [[1, 2, 3], [4, 5, 6]];

Thanks Jarrett.

Am I having a blonde day?

   int[2,3] m = [ 1, 2, 3 ]; 
   writefln( m=%s, .sizeof=%d, m, m.sizeof);

Compiles and prints:

m=[1,2,3], .sizeof=12

So what does that declaration, int[2,3], mean?

Think this is what threw me initially.

Thanks, Justin



Re: How initialize a static rectangular array (2-d matrix)

2009-10-08 Thread Christopher Wright

Justin Johansson wrote:

Jarrett Billingsley Wrote:


On Thu, Oct 8, 2009 at 8:10 PM, Justin Johansson n...@spam.com wrote:

I almost have to apologize for this question but ..

How does one initialize a static rectangular array (2-d matrix) in D1?

None of the following or other variations that I've tried compile with DMD 1.0.

int[2, 3] matrix = [ 1, 2, 3,  4, 5, 6 ];

..that's not how you declare a rectangular array type. It's int[3][2].

int[3][2] matrix = [[1, 2, 3], [4, 5, 6]];


Thanks Jarrett.

Am I having a blonde day?

   int[2,3] m = [ 1, 2, 3 ]; 
   writefln( m=%s, .sizeof=%d, m, m.sizeof);


Compiles and prints:

m=[1,2,3], .sizeof=12

So what does that declaration, int[2,3], mean?

Think this is what threw me initially.

Thanks, Justin


2,3 is a comma expression. Evaluate everything, and return the rightmost 
value.


Re: How initialize a static rectangular array (2-d matrix)

2009-10-08 Thread Ellery Newcomer
Justin Johansson wrote:
 Jarrett Billingsley Wrote:
 
 On Thu, Oct 8, 2009 at 8:10 PM, Justin Johansson n...@spam.com wrote:
 
 Thanks Jarrett.
 
 Am I having a blonde day?
 
int[2,3] m = [ 1, 2, 3 ]; 
writefln( m=%s, .sizeof=%d, m, m.sizeof);
 
 Compiles and prints:
 
 m=[1,2,3], .sizeof=12
 
 So what does that declaration, int[2,3], mean?
 
 Think this is what threw me initially.
 
 Thanks, Justin
 

It probably means DMD isn't doing enough validation checking.

Comma expression, hence typeof(m) is int[3], m.sizeof is 3 * int.sizeof


Re: How initialize a static rectangular array (2-d matrix)

2009-10-08 Thread bearophile
Jarrett Billingsley Wrote:

 Bahahaha, oh comma exps.

Their usage will need to be quite regulated in D (using them for smarter 
purposes is a cute idea, but it may impair C compatibility).

Bye,
bearophile